Научу собирать фреймворк SpringBoot + SSM за десять минут

задняя часть база данных Spring MyBatis

В настоящее время наиболее распространенной веб-инфраструктурой Java должен быть SSM, и в настоящее время многие люди предпочитают платформу SSM из-за ее легкого веса и гибкости. Преимущества облегченной, упрощенной конфигурации проекта SpringBoot и отсутствия требований к конфигурации XML теперь пользуются популярностью у общественности.

В этой статье я научу вас, какintellij ideaБыстро построить хорошийMaven + Spring + SpringMVC + MyBatis + SpringBootс кадр,сделал это достаточно просто, что позволит вам сразу начать свой веб-проект

Прикрепите адрес github этой простой сборки фреймворка.SSM-SpringBoot

1. Создайте проект

Выберите Spring Initiallizr

image

Добавьте самые основные зависимости Web, MySQL, MyBatis и другие требования можно добавить позже, для базы данных выбран MySQL

2. Настройте источник данных

Источник данных хранит всю информацию для установления соединения с базой данных.

1. Настройте источник данных IDEA

Введите адрес, порт, имя пользователя, пароль и т. д., чтобы завершить настройку.

2. Настройте источник данных Spring

файл application.properties добавить:

spring.datasource.url = jdbc:mysql://xx.xx.xx.x:xxx/xxx?characterEncoding=utf8&allowMultiQueries=true&useSSL=false
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
  • url : URL источника данных, форматjdbc:mysql://Host(主机名或 IP 地址):Post(端口)/Database(数据库名称), где allowMultiQueries = true : разрешить одновременное выполнение нескольких sql (разделенных точкой с запятой); useSSL : выполнять ли SSL-соединение, выбирать в соответствии с реальной ситуацией
  • имя пользователя: имя пользователя
  • пароль : пароль
  • driver-class-name : имя драйвера, разные базы данных имеют разные имена драйверов, например, база данных oracleoracle.jdbc.driver.OracleDriver, база данных MySQLcom.mysql.jdbc.Driver

3. Весенние аннотации

  • Аннотируйте контроллер аннотацией @Controller / @RestController, чтобы указать, что класс существует как контроллер.
  • Аннотируйте класс бизнес-уровня с помощью аннотации @Service
  • Аннотируйте интерфейс сопоставления слоя сохраняемости с помощью аннотации @Repository.
  • Аннотируйте другие компоненты с помощью аннотации @Component
  • Аннотировать классы конфигурации с помощью аннотации @Configuration

4. Мой Батис

Наиболее важной частью построения всего проекта является интеграция springboot и mybatis, и springboot также предоставляет очень удобный способ.

1. XML-файл

  • объявлен как файл сопоставления
  • пространство имен: относится к интерфейсу сопоставления, соответствующему файлу сопоставления; в общем, файл конфигурации сопоставления XML соответствует пространству имен, а это пространство имен соответствует интерфейсу. рот
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.swit.dao.MyMapper">

</mapper>

2. application.properties

  • Конфигурация Mybatis указывает адрес файла базовой конфигурации mybatis и файла сопоставления классов сущностей.
mybatis.mapperLocations = classpath:mapper/**/*.xml
mybatis.typeAliasesPackage = com.swit.model
  • Настройка typeAliasesPackage позволяет классам сущностей в пакете com.swit.model использовать псевдонимы в файлах сопоставления, например:
<select id="getUser" parameterType="int" resultType="User">

</select>

Если typeAliasesPackage не настроен, требуетсяresultType="com.swit.model.User"

  • Если вы хотите дополнительно настроить MyBatis через xml-файл, добавьте путь к файлу:
mybatis.config-locations=classpath:mybatis/mybatis-config.xml

3. Добавьте сканирование для класса картографа

Выберите один из следующих двух методов

(1) Вы можете добавить @MapperScan в класс запуска

значение — это пакет, в котором находится класс преобразователя (обратите внимание, что это путь к пакету, а не к классу!)

@MapperScan(value = "com.swit.dao")

Кроме того, аннотация @MapperScan предназначена для классов интерфейса, поскольку это аннотированный класс интерфейса, его необходимо сканировать с помощью этой аннотации.

(2) аннотацию @mapper можно добавить к каждому классу картографа

@Mapper
@Repository
public interface MyMapper {
}

Итак, вы закончили создание своего проекта, и ниже я расскажу еще о нескольких вещах.

5. Другие моменты, на которые следует обратить внимание

1. @SpringBootApplication

  • Эта аннотация находится в классе запуска
  • @SpringBootApplication эквивалентен использованию @Configuration , @EnableAutoConfiguration и @ComponentScan со свойствами по умолчанию, поэтому классу запуска не нужно добавлять эти три аннотации.
  • @Configuration : пометить класс как класс конфигурации.
  • @EnableAutoConfiguration : включить автоматическую настройку.
  • @ComponentScan: автоматически собирать все компоненты Spring.

2. Разверните сервер

Если вы хотите развернуть свой проект SpringBoot на Alibaba Cloud, Tencent Cloud и других серверах, вам нужно что-то добавить. 1. Если вам нужно развернуть в веб-контейнере путем упаковки, вам нужно наследовать SpringBootServletInitializer, чтобы переопределить метод configure(SpringApplicationBuilder)

public class SpringbootApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(SpringbootApplication.class);
    } 
}

2. Добавьте плагин пакета в файл pom.

    <build>
        <!--打包后的项目名,url 前缀-->
		<finalName>projectName</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<!--设置编译时使用的 JDK 版本-->
					<source>1.8</source>
					<!--设置运行时使用的 JDK 版本-->
					<target>1.8</target>
					<!--设置为 true 则跳过测试-->
					<skip>true</skip>
				</configuration>
			</plugin>
		</plugins>
	</build>
  1. Скорее всего, вам также нужно выполнить междоменную обработку.
@Component
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
        response.setHeader("Access-Control-Allow-Origin", Origin);
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, " + this.tokenHeader);
        response.setHeader("Access-Control-Allow-Credentials", "true");
        chain.doFilter(req, res);
    }

    @Override
    public void init(FilterConfig filterConfig) {
    }

    @Override
    public void destroy() {
    }
}

6. Интегрируйте другие компоненты

1. redis

Redis также является NoSQL, который часто используется в наших проектах и ​​часто используется для кэширования.

полагаться

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

application.properties

# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=123456
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=15
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=15
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0

2. Источник данных друидов

Пул соединений с БД для мониторинга

полагаться

<dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid</artifactId>
       <version>1.0.20</version>
</dependency>

application.properties

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.filters=stat
spring.datasource.maxActive=20
spring.datasource.initialSize=5
spring.datasource.maxWait=60000
spring.datasource.minIdle=1
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=select 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxOpenPreparedStatements=20

Ваше внимание — самая большая мотивация для меня вести блог~

Вам также может понравиться :