20221111 springboot配置

SpringBoot

创建springboot项目

IDEA版本2022.2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击create之后等待下载

使用mybatisx插件

下载mybatisx插件

在这里插入图片描述

在IDEA连接mysql

在这里插入图片描述

连接mysql之后选择一张表右击鼠标,点击mybatisx
在这里插入图片描述
进入之后选择选项
在这里插入图片描述
这里只加入了mybatis,我们不选择annotation,如果有需要可以点击其他的选项。
选择完了点击finish。
在这里插入图片描述

在application.properties加入配置

#数据连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=UTC&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

#添加mapper扫描
mybatis.mapper-locations=classpath:mapper/*.xml

logging.level.com.example.springbootssm.dao=DEBUG

#springboot大于2.6需要加入下行配置才能使用swagger
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

#切换druid连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 初始化大小
spring.datasource.druid.initial-size=5
# 最小连接数
spring.datasource.druid.min-idle=10
# 最大连接数
spring.datasource.druid.max-active=20
# 获取连接时的最大等待时间
spring.datasource.druid.max-wait=60000
  # 一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
# 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计
spring.datasource.druid.filters=stat,wall
# 检测连接是否有效的 SQL语句,为空时以下三个配置均无效
spring.datasource.druid.validation-query=ELECT 1
# 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能
spring.datasource.druid.test-on-borrow=true
# 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能
spring.datasource.druid.test-on-return=true
# 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能
spring.datasource.druid.test-while-idle=true

# 是否开启 StatViewServlet
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
spring.datasource.druid.stat-view-servlet.enabled=true
# 访问监控页面 黑名单
#spring.datasource.druid.stat-view-servlet.deny=xxxx
# 访问监控页面 登陆账号
spring.datasource.druid.stat-view-servlet.login-username=admin
  # 访问监控页面 登陆密码
spring.datasource.druid.stat-view-servlet.login-password=admin


# 是否开启 FilterStat,默认true
spring.datasource.druid.filter.stat.enabled=true
# 是否开启 慢SQL 记录,默认false
spring.datasource.druid.filter.stat.log-slow-sql=true
# 慢 SQL 的标准,默认 3000,单位:毫秒
spring.datasource.druid.filter.stat.slow-sql-millis=5000
# 合并多个连接池的监控数据,默认false
spring.datasource.druid.filter.stat.merge-sql=false

后面写好service层、controller层

启动web服务

写好service层和controller层之后
在xxxApplication.java文件加入@MapperScan(“dao路径”)

在这里插入图片描述
启动这个文件就web服务,可以在浏览器访问了
浏览器的路径不需要添加项目名

添加 swagger

在pom.xml中添加依赖

<!--swagger2 start-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>3.3.5</version>
</dependency>
<!--swagger2 end-->

添加配置类
基础包下新建一个config包

@Configuration
@EnableSwagger2
public class Swagger2 {

        //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
      //创建一个bean
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    //为当前包路径
                    .apis(RequestHandlerSelectors.basePackage("com.etc.ssmdemo"))
                    .paths(PathSelectors.any())
                    .build();
        }
        //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    //页面标题
                    .title("Spring MVC 测试使用 Swagger2 构建RESTful API")
                    //创建人
                    .contact(new Contact("小白", "http://zretc.net", ""))
                    //版本号
                    .version("1.0")
                    //描述
                    .description("API 描述")
                    .build();
        }


    }

如果是springboot版本大于2.6,需要在配置文件中加入以下配置:

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

访问地址

http://localhost:8080/swagger-ui.html

添加druid

在pom.xml中加入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.21</version>
</dependency>

在application.properties加入配置

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

 # 初始化大小
spring.datasource.druid.initial-size=5
# 最小连接数
spring.datasource.druid.min-idle=10
# 最大连接数
spring.datasource.druid.max-active=20
# 获取连接时的最大等待时间
spring.datasource.druid.max-wait=60000
  # 一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
# 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计
spring.datasource.druid.filters=stat,wall
# 检测连接是否有效的 SQL语句,为空时以下三个配置均无效
spring.datasource.druid.validation-query=ELECT 1
# 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能
spring.datasource.druid.test-on-borrow=true
# 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能
spring.datasource.druid.test-on-return=true
# 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能
spring.datasource.druid.test-while-idle=true

# 是否开启 StatViewServlet
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
spring.datasource.druid.stat-view-servlet.enabled=true
# 访问监控页面 黑名单
#spring.datasource.druid.stat-view-servlet.deny=xxxx
# 访问监控页面 登陆账号
spring.datasource.druid.stat-view-servlet.login-username=admin
  # 访问监控页面 登陆密码
spring.datasource.druid.stat-view-servlet.login-password=admin


# 是否开启 FilterStat,默认true
spring.datasource.druid.filter.stat.enabled=true
# 是否开启 慢SQL 记录,默认false
spring.datasource.druid.filter.stat.log-slow-sql=true
# 慢 SQL 的标准,默认 3000,单位:毫秒
spring.datasource.druid.filter.stat.slow-sql-millis=5000
# 合并多个连接池的监控数据,默认false
spring.datasource.druid.filter.stat.merge-sql=false

访问地址

http://localhost:8080/druid/index.html

添加PageHelper

在pom.xml加入依赖

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>最新版本</version>
</dependency>

添加完后就可以使用了

使用application.yml替换application.properties

server:
  port: 9876
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/hrm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
      min-idle: 10
      max-active: 20
      max-wait: 60000
      min-evictable-idle-time-millis: 300000
      time-between-eviction-runs-millis: 60000
      filters: stat,wall
      validation-query: SELECT 1
      test-on-borrow: true
      test-on-return: true
      test-while-idle: true
      stat-view-servlet:
        allow: 127.0.0.1
        enabled: true
        login-username: admin
        login-password: admin

      filter:
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 5000
          merge-sql: false



  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER
mybatis:
  mapper-locations:
    -  mapper/*.xml

logging:
  level:
    com.etc.demobootssm.controller: debug
    com.etc.demobootssm.dao: debug
  file:
    name: logs/spring-boot-logging.log

  pattern:
    console: '%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n'
    file: '%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n'

@ConfigurationProperties 映射实体的属性值

在这里插入图片描述

在这里插入图片描述
@PropertySource()映射实体类的值
在这里插入图片描述
在这里插入图片描述

添加redis

在pom.xml加入依赖

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

在config 目录中添加配置类

@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Autowired
    private RedisConnectionFactory redisConnectionFactory;


    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        serializer.setObjectMapper(objectMapper);

        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(serializer);
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(serializer);
        redisTemplate.afterPropertiesSet();

        return redisTemplate;
    }

    @Bean
    public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer()));
        return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
    }
}
  • @CacheConfig
    一个类中可能会有多个缓存操作,而这些缓存操作可能是重复的。这个时候可以使用@CacheConfig
@CacheConfig("books")
public class BookRepositoryImpl implements BookRepository {
    @Cacheable
    public Book findBook(Integer bookId) {...}
}
  • @Cacheable
    @Cacheable 主要的参数

    • value 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 例如:@Cacheable(value=”mycache”) 或者 @Cacheable(value={”cache1”,”cache2”}

    • key 缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合 例如:@Cacheable(value=”testcache”,key=”#userName”)或者
      @Cacheable(cacheNames=“books”, key=“#map[‘bookid’].toString()”)
      public Book findBook(Map<String, Object> map)或者
      @Cacheable(cacheNames=“books”, key=“#isbn.rawNumber”)
      public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)

    • condition 缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存 例如:@Cacheable(value=”testcache”,condition=”#userName.length()>2”)

  • @CachePut
    参数格式与@Cacheable相同
    @CachePut需要解决数据更新后,redis的数据也需要更新
    那需要两个标签的key、value、方法的返回值一致

  • @CacheEvict
    @CachEvict 的作用 主要针对方法配置,能够根据一定的条件对缓存进行清空
    删除操作需要key、value和@Cacheable一致,方法返回值可以不同

最后需要在xxxapplication.java文件里,启动类前加上@EnableCaching

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值