В настоящее время наиболее распространенной веб-инфраструктурой Java должен быть SSM, и в настоящее время многие люди предпочитают платформу SSM из-за ее легкого веса и гибкости. Преимущества облегченной, упрощенной конфигурации проекта SpringBoot и отсутствия требований к конфигурации XML теперь пользуются популярностью у общественности.
В этой статье я научу вас, какintellij ideaБыстро построить хорошийMaven + Spring + SpringMVC + MyBatis + SpringBootс кадр,сделал это достаточно просто, что позволит вам сразу начать свой веб-проект
Прикрепите адрес github этой простой сборки фреймворка.SSM-SpringBoot
1. Создайте проект
Выберите Spring Initiallizr
Добавьте самые основные зависимости 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 : имя драйвера, разные базы данных имеют разные имена драйверов, например, база данных oracle
oracle.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>
- Скорее всего, вам также нужно выполнить междоменную обработку.
@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