SpringBoot_整合

7. SpringBoot整合

SpringBoot极大的简化的SSM整合过程,只需要加入相关依赖和少量配置即可

下面演示SpringBoot整合SpringMVC和MyBatis

新建Maven项目

  1. 使用SpringInitializer初始化Sprign项目
    在这里插入图片描述
  • 如果出现初始化错误,在settings中配置代理
    在这里插入图片描述
  • 测试连接是否正常
    在这里插入图片描述
  1. 初始项目配置
    在这里插入图片描述
  2. 选择项目依赖
    在这里插入图片描述
  3. 完成项目创建
    在这里插入图片描述
  • 项目提示信息:

    Windows Defender 可能影响项目的构造和性能,windows defender会扫描这些文件夹,IDEA可以自动修复这个问题,点击fix自动排除扫描
    在这里插入图片描述

  • 或者手动排除项

4.1. windwos设置 - 更新和安全
在这里插入图片描述
​ 4.2. Windows Defender - 添加排除项
在这里插入图片描述
​ 4.3. 排除文件夹
在这里插入图片描述
在这里插入图片描述

导入依赖

pom.xml

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>

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

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.3</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>2.1.5</version>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.17</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

添加配置

  • application.properties
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  • log4j.properties
### 设置###
# debug 日志级别,常用的4个日志级别:ERROR、WARN、 INFO、DEBUG
log4j.rootLogger = debug,stdout

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

添加Druid连接池配置类

  • application.yml

    以下属性都是druid连接池属性

spring:
  datasource:
    druid:
      username: root      
      password: root      
      url: jdbc:mysql://127.0.0.1:3306/mybatis-01?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong
      driver-class-name: com.mysql.cj.jdbc.Driver

      #初始化时建立物理连接的个数,默认值0
      initial-size: 1

      #最大连接池数量,默认值8
      max-active: 20

      #最小连接池数量
      min-idle: 1

      #获取连接时最大等待时间,单位毫秒。配置了maxWait之后,
      #缺省启用公平锁,并发效率会有所下降,
      #如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
      max-wait: 60000

      #是否缓存preparedStatement,也就是PSCache。
      #PSCache对支持游标的数据库性能提升巨大,比如说oracle。
      #在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
      #5.5及以上版本有PSCache,建议开启。默认false不开启
      pool-prepared-statements: true

      #要启用PSCache,必须配置大于0,当大于0时,
      #poolPreparedStatements自动触发修改为true。
      #在Druid中,不会存在Oracle下PSCache占用内存过多的问题,
      #可以把这个数值配置大一些,比如说100 ,默认值 -1
      max-open-prepared-statements: 20

      #用来检测连接是否有效的sql,要求是一个查询语句。
      #如果validationQuery为null,testOnBorrow、testOnReturn、
      #testWhileIdle都不会其作用。在mysql中通常为select 'x',在oracle中通常为
      #select 1 from dual
      validation-query: SELECT 'x'

      #申请连接时执行validationQuery检测连接是否有效,
      #做了这个配置会降低性能。默认false关闭
      test-on-borrow: false

      #归还连接时执行validationQuery检测连接是否有效,
      #做了这个配置会降低性能,默认false关闭
      test-on-return: false

      # 建议配置为true,不影响性能,并且保证安全性。
      # 申请连接的时候检测,如果空闲时间大于
      # timeBetweenEvictionRunsMillis,
      # 执行validationQuery检测连接是否有效。默认false
      test-while-idle: true

      # 有两个含义:
      # 1) Destroy线程会检测连接的间隔时间
      # 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
      time-between-eviction-runs-millis: 60000

      #Destory线程中如果检测到当前连接的最后活跃时间和当前时间的差值大于
      #minEvictableIdleTimeMillis,则关闭当前连接。
      min-evictable-idle-time-millis: 300000

      #属性类型是字符串,通过别名的方式配置扩展插件,
      #常用的插件有:
      #监控统计用的filter:stat
      #日志用的filter:log4j
      #防御sql注入的filter:wall
      filters: stat,wall,log4j #配置多个英文逗号分隔

      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 合并多个DruidDataSource的监控数据
      useGlobalDataSourceStat: true

​ 注意:添加了Druid连接池,就需要把之前配置的数据库连接去掉

  • application.properties
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
#是否启用StatFilter默认值false
spring.datasource.druid.web-stat-filter.enabled= true 
spring.datasource.druid.web-stat-filter.url-pattern= /*
spring.datasource.druid.web-stat-filter.exclusions= *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
#身份标识 从session中获取
#spring.datasource.druid.web-stat-filter.session-stat-enable=
#spring.datasource.druid.web-stat-filter.session-stat-max-count=
#身份标识 从cookie中获取
#spring.datasource.druid.web-stat-filter.principal-session-name=
#spring.datasource.druid.web-stat-filter.principal-cookie-name=
#spring.datasource.druid.web-stat-filter.profile-enable=

# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)

spring.datasource.druid.stat-view-servlet.enabled= true
spring.datasource.druid.stat-view-servlet.url-pattern= /druid/*
spring.datasource.druid.stat-view-servlet.reset-enable= false
spring.datasource.druid.stat-view-servlet.login-username= admin
spring.datasource.druid.stat-view-servlet.login-password= admin123
spring.datasource.druid.stat-view-servlet.allow= 127.0.0.1
spring.datasource.druid.stat-view-servlet.deny= 192.168.16.200

# Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
#spring.datasource.druid.aop-patterns= # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
  • 配置Druid数据源

    使用配置类添加druid数据源

@Configuration
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    public DataSource dataSourceOne(){
        return DruidDataSourceBuilder.create().build();
    }
}

其实启动类就是一个配置类,可以将上述代码加入到启动类中

@SpringBootApplication
public class Ssm0731Application {

    public static void main(String[] args) {
        SpringApplication.run(Ssm0731Application.class, args);
    }
    
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    public DataSource dataSourceOne(){
        return DruidDataSourceBuilder.create().build();
    }
}

测试获取的连接

@SpringBootTest
class Springboot01MvcMybatisApplicationTests {

    @Autowired
    DataSource dataSource;

    @Test
    void contextLoads() throws SQLException {
        System.out.println(dataSource.getConnection());
    }

}

代码环境

使用逆向工程生成model类和mapper.xml

注意model中添加持久化注解@Id等,关联关系需要手动添加

mapper.xml中的SQL删除掉,因为通用mapper已经包含这些SQL了。只保留SQL片段(列名)

配置热部署

开发时,每次修改代码需要重启,添加springBoot的热部署依赖,修改完代码自动编译(idea 2020测试无效)

  1. 开启auto make自动编译

    ​快捷键 Alt + Ctrl + Shift + /允许auto make启动,即使开发的应用程序当前正在运行。
    在这里插入图片描述
    在这里插入图片描述
    设置自动编译项目
    在这里插入图片描述
    添加依赖

<!-- 热部署模块 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- 这个需要为 true -->
    <optional>true</optional>
</dependency>

猜你喜欢

转载自blog.csdn.net/qq_44509920/article/details/107738382