SpringBoot

SpringBoot的优点

  • 嵌入的Tomcat、Jetty或者Undertow,无须部署 war 文件。
  • 约定大于配置,这是SpringBoot的主导思想。

yaml 语法

配置文件:

application.yml

  1. server:
  2. port: 8080

处理静态资源

  1. 在springboot,我们可以使用以下方式处理静态资源
    • webjars localhost:8080/webjars/
    • public, static, /**, resources localhost:8080/
  2. 优先级:resources > static(默认使用) > public
  3. 在 templates 目录下的页面,只能通过 controller 访问(需要模板引擎的支持)

thymeleaf 模板引擎


整合Druid

1、在yaml里面配置参数

  1. spring:
  2. datasource:
  3. username: root
  4. password: Falsche
  5. url: jdbc:mysql://localhost:3306/db_ssm?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8&allowPublicKeyRetrieval=true
  6. driver-class-name: com.mysql.cj.jdbc.Driver
  7. type: com.alibaba.druid.pool.DruidDataSource #自定义数据源
  8. #Spring Boot 默认是不注入这些属性值的,需要自己绑定
  9. #druid 数据源专有配置
  10. initialSize: 5
  11. minIdle: 5
  12. maxActive: 20
  13. maxWait: 6000
  14. timeBetweenEvictionRunsMillis: 6000
  15. minEvictableIdleTimeMillis: 3000
  16. validationQuery: SELECT 1 FROM DUAL
  17. testwgukeIdle: true
  18. testOnBorrow: false
  19. testOnReturn: false
  20. poolPreparedStatements: true
  21. #配置监控统计拦截的filters,stat:监控统计;log4j:日志记录;wall:防御sql注入
  22. filters: stat, wall, log4j
  23. maxPoolPreparedStatementOerConnectionSize: 20
  24. useGlobalDataSourceStat: true
  25. connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

2、可以创建配置类,通过配置类来绑定yaml文件

因为springboot内置了tomcat,所以没有web.xml,我们可以通过配置类来配置druid的后台监控(即web.xml)以及filter过滤器。

  1. /**
  2. * Druid的配置类
  3. * 除了配置后台监控(即web.xml)
  4. * 还可以配置filter过滤器
  5. */
  6. @Configuration
  7. public class DruidConfig {
  8. @ConfigurationProperties(prefix = "spring.datasource")
  9. @Bean
  10. public DataSource druidDataSource() {
  11. return new DruidDataSource();
  12. }
  13. /**
  14. * 后台监控,相当于以前的web.xml
  15. * 因为SpringBoot内置了tomcat服务器,所以没有web.xml,使用ServletRegistrationBean来代替
  16. * @return
  17. */
  18. @Bean
  19. public ServletRegistrationBean statViewServlet() {
  20. ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
  21. //后台需要有人登录,账号密码配置
  22. HashMap<String, String> initParameters = new HashMap<>();
  23. initParameters.put("loginUsername", "admin"); //登录账号,key值固定
  24. initParameters.put("loginPassword", "123456"); //登录密码,key值固定
  25. initParameters.put("allow", ""); //允许谁可以访问
  26. bean.setInitParameters(initParameters); //设置初始化参数
  27. bean.setLoadOnStartup(1); //设置启动优先级
  28. return bean;
  29. }
  30. }

整合MyBatis

  1. //@Mapper:表示本类是一个MyBatis的Mapper

yaml配置:

  1. #用yml文件来配置mybatis配置文件
  2. mybatis:
  3. type-aliases-package: com.falsche.sringboot.pojo
  4. mapper-locations: classpath:mybatis/mapper/*.xml

用yml来配置mybatis配置文件:

  1. #用yml文件来配置mybatis配置文件
  2. mybatis:
  3. type-aliases-package: com.kuang.pojo
  4. mapper-locations: classpath:mybatis/mapper/*.xml

整合pagehelper

  1. 添加依赖:

    1. <!--pagehelper-->
    2. <dependency>
    3. <groupId>com.github.pagehelper</groupId>
    4. <artifactId>pagehelper-spring-boot-starter</artifactId>
    5. <version>1.2.5</version>
    6. </dependency>
  2. aplication.yml配置

    1. #pagehelper配置
    2. pagehelper:
    3. helper-dialect: mysql #配置数据库,不配置也会自动检测
    4. reasonable: true #参数合理化开启,默认是false
    5. support-methods-arguments: true #通过mapper来传递分页参数,默认是false
    • helper-dialect:配置使用哪种数据库语言,不配置也会自动检测
    • reasonable:配置分页参数合理化功能,默认是false
    • support-methods-arguments:支持通过Mapper接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页

国际化

  1. 在 resource 目录下创建 i18n 文件
  2. 创建一个 login.properties 文件
  3. 再创建一个 login_zh_CN.properties 文件
  4. 再创建一个 login_en_US.properties 文件
  5. 对配置文件设置中/英文内容

image-20200930143504331.png

  1. 自定义地区解析器

    1. //自定义地区解析器
    2. public class MyLocaleResolver implements LocaleResolver {
    3. //解析请求
    4. @Override
    5. public Locale resolveLocale(HttpServletRequest request) {
    6. //获取请求的语言参数
    7. String language = request.getParameter("l");
    8. Locale locale = Locale.getDefault(); //如果没有就使用默认的语言参数;
    9. //如果请求的链接携带了国际化语言
    10. if (!StringUtils.isEmpty(language)) {
    11. //zh_CN
    12. String[] split = language.split("_");
    13. //国家,地区
    14. locale = new Locale(split[0], split[1]);
    15. }
    16. return locale;
    17. }
    18. @Override
    19. public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
    20. }
    21. }

杨开振 springboot