0


springBoot框架

** 使用springmvc框架,除了引入相关的依赖,还需要手动配置spring对象和springmvc对象,这个过程使用xml文件编写实现,最后在web的配置文件中引入这两个对象。**

** 要实现dispatcherServelet的组件功能,还得在springmvc容器中手动注入相关组件的实现类对象。**

** 使用springBoot框架,spring容器及springmvc容器的依赖及配置文件都被封装成相应的jar包,把这种包含依赖及配置信息的maven项目称之为启动器,只需要引入相应的maven依赖就不需要手动编写配置文件了。**





springBoot框架的pom文件:

** maven项目之间有三种关系:依赖,继承,聚合**

** 1) <parent>标签实现了继承关系:**

** 用于引入父工程的相关依赖**

** 2)父工程中的<dependencyManagement>标签用来管理依赖:**

** 子工程引入依赖时只会导入自己需要的依赖,并不用导入父工程的所有依赖文件。**

** 3)<dependency>标签引入启动器或者插件。**

** 4)这里使用springboot2版本,使用jdk8就ok**

** 如果使用springboot3,使用的jdk版本还要更高。 **

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.4.11</version>
  5. </parent>
  1. 5)**创建一个web项目需要的启动器及其他依赖**:
  1. <!--配置依赖-->
  2. <dependencies>
  3. <!--配置启动器依赖:相关的jar以及配置信息-->
  4. <!--web启动器依赖: Spring和SpringMVC的相关依赖以及SpringBoot启动类的依赖以及Tomcat的依赖以及相关配置信息-->
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-web</artifactId>
  8. </dependency>
  9. <!--配置MyBatis的启动器依赖-->
  10. <dependency>
  11. <groupId>org.mybatis.spring.boot</groupId>
  12. <artifactId>mybatis-spring-boot-starter</artifactId>
  13. <version>2.1.4</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>mysql</groupId>
  17. <artifactId>mysql-connector-java</artifactId>
  18. <version>8.0.11</version><!-- 可以省略,spring-boot-starter-parent中存在其版本声明 -->
  19. </dependency>
  20. <!--配置Druid数据库链接池的启动器依赖-->
  21. <dependency>
  22. <groupId>com.alibaba</groupId>
  23. <artifactId>druid-spring-boot-starter</artifactId>
  24. <version>1.2.18</version>
  25. </dependency>
  26. <!--配置Junit4的启动器依赖-->
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-test</artifactId>
  30. </dependency>
  31. <!--配置PageHelper的启动器依赖-->
  32. <dependency>
  33. <groupId>com.github.pagehelper</groupId>
  34. <artifactId>pagehelper-spring-boot-starter</artifactId>
  35. <version>1.4.7</version>
  36. </dependency>
  37. <!--配置Thymeleaf的启动器依赖-->
  38. <dependency>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  41. </dependency>
  42. <!--配置其他传统依赖-->
  43. <dependency>
  44. <groupId>org.projectlombok</groupId>
  45. <artifactId>lombok</artifactId>
  46. <version>1.18.24</version>
  47. <scope>provided</scope>
  48. </dependency>
  49. </dependencies>

springBoot框架的配置yml文件:

** 虽然引入启动器已经自动配置文件,但是springBoot框架还是需要引入配置文件,比如连接数据库的用户名、密码,连接数据库的地址是什么,要使用的端口号是多少。**

** 1) 配置文件的位置可以在四个位置:**

** 项目根目录下**

** 项目根目录config包中**

** resources目录下**

** resources目录的congfig中**

** 2)配置文件的名字可以叫:**

** application.properties**

** application.yml**

** application.yaml**

** 3)执行先后顺序:**

** A ,B , C , D**

** 4)并且多个配置文件同时配置同一个属性,默认读第一个**

  1. ![](https://i-blog.csdnimg.cn/direct/941238c66e744061a6a27e1c24a00db2.png)
  1. #server:
  2. # port: 8080
  3. spring:
  4. datasource:
  5. driver-class-name: com.mysql.cj.jdbc.Driver
  6. url: jdbc:mysql://localhost:3306/0726db?serverTimezone=Asia/Shanghai
  7. password: root
  8. username: root
  9. druid: #Druid连接池的配置
  10. # 连接池的配置信息
  11. # 初始化大小,最小,最大
  12. initial-size: 5
  13. max-active: 30
  14. min-idle: 5
  15. # 配置获取连接等待超时的时间
  16. max-wait: 60000
  17. validation-query: SELECT 1 FROM DUAL
  18. #配置一个连接在池中最小生存的时间,单位是毫秒
  19. min-evictable-idle-time-millis: 300000
  20. test-while-idle: true
  21. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  22. filters: stat,wall,slf4j
  23. # 配置DruidStatViewServlet
  24. stat-view-servlet:
  25. # 登录名
  26. login-username: admin
  27. # 登录密码
  28. login-password: admin
  29. url-pattern: /druid/*
  30. # IP白名单(没有配置或者为空,则允许所有访问)
  31. allow: 127.0.0.1,
  32. reset-enable: false
  33. # 必须启用,要不会404
  34. enabled: true
  35. mybatis:
  36. mapper-locations: classpath:mybatis/*.xml
  37. type-aliases-package: com.xja.bean
  38. pagehelper:
  39. offsetAsPageNum: true
  40. rowBoundsWithCount: true

springBoot整合logback日志:

** spring-boot-starter-web内置了logback相关依赖:**

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

** 具体的日志实现的参数还需要配置文件:**

** 在resource目录下创建logback.xml,名字固定**

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <configuration>
  3. <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
  4. <property name="LOG_HOME" value="${catalina.base}/logs/" />
  5. <!-- 控制台输出 -->
  6. <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender">
  7. <!-- 日志输出编码 -->
  8. <layout class="ch.qos.logback.classic.PatternLayout">
  9. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
  10. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
  11. </pattern>
  12. </layout>
  13. </appender>
  14. <!-- 按照每天生成日志文件 -->
  15. <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
  16. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  17. <!--日志文件输出的文件名-->
  18. <FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>
  19. <MaxHistory>30</MaxHistory>
  20. </rollingPolicy>
  21. <layout class="ch.qos.logback.classic.PatternLayout">
  22. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
  23. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
  24. </pattern>
  25. </layout>
  26. <!--日志文件最大的大小-->
  27. <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  28. <MaxFileSize>10MB</MaxFileSize>
  29. </triggeringPolicy>
  30. </appender>
  31. <!-- 日志输出级别 -->
  32. <root level="info">
  33. <appender-ref ref="Stdout" />
  34. <appender-ref ref="RollingFile" />
  35. </root>
  36. <logger name="com.wollo.mapper" level="DEBUG"></logger>
  37. <!--日志异步到数据库 -->
  38. <!-- <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
  39. 日志异步到数据库
  40. <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
  41. 连接池
  42. <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
  43. <driverClass>com.mysql.jdbc.Driver</driverClass>
  44. <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
  45. <user>root</user>
  46. <password>root</password>
  47. </dataSource>
  48. </connectionSource>
  49. </appender> -->
  50. </configuration>


springBoot整合junit:

** 配置单元测试的启动器:**

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-test</artifactId>
  4. <version>2.6.1</version>
  5. </dependency>

** 单元测试需要在类上添加注解@SpringBootTest,Testa类的对象作为项目中的一部分,在项目启动时先创建自己,这样才能从springboot的框架中去自动装配其他对象。**

** 在test()运行时,首先会去调用项目的入口方法,这样,也就是单元测试间接的会去跑一遍项目。**

** 需要将测试类Testa写在com.xja中,尽量和springboot的启动方法写在同一目录下。**

springBoot整合themeleaf:

** resources目录新建templates包:**

** 创建对应的html文件。**

** 控制器对应的转发流程会根据返回值自动调用themeleaf视图解析器。实现流程和jsp视图解析器整体一样,并且jsp解析器会根据jsp文件去编译java文件,解析出对应的class类。**

而themeleaf视图解析器直接在html上把作用域数据格式化,效率更高。

  1. <!--配置Thymeleaf的启动器依赖-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  5. </dependency>



springBoot整合pageHelper:

  1. 引入启动器:
  1. <dependency>
  2. <groupId>com.github.pagehelper</groupId>
  3. <artifactId>pagehelper-spring-boot-starter</artifactId>
  4. <version>1.4.7</version>
  5. </dependency>

** 在不使用pageHelper插件时,查询语句应该是有两个mapper:**

** 一个mapper,在sql使用limit关键字进行分页查询**

** 另一个mapper,在sql使用count(1)去查询共有多少页。**

** 这样一个完整的查询业务才算完成,但是mapper要传入的参数除了查询的限制条件如姓名字段,还需要传入从多少条开始的数据,以及分页的每页条数。**

** 这样的话在service层还需要处理参数,因为前端只会传两个参数:**

** 第几页。 //sql语句得要具体从第几条开始的数据而非第几页。**

** 每页的数据条数。**

** 使用pageHelper插件的话就非常简单,只需要编写一个mapper的一条sql语句。但是它的底层原理是拦截mapper层sql语句执行,转而自己根据这条sql语句编写了两个mapper来实现分页查询功能。这也就是为什么控制台只执行一个分页查询业务,常常打印了两条sql语句。**



springBoot的启动类 :

一、@SpringBootApplication注解:

  1. 该注解是一个组合注解,重点看:

1)@SpringBootContfiguration

  1. ** 内部是一个@Configuration,也就是一个配置类,把我创建的MyApplication类作为配置类,表明该类可以配置其他的bean对象。**
  2. ![](https://i-blog.csdnimg.cn/direct/cfaf0ddbfc574713bac0c1ff3e1f4a0a.png)

2)@ComponentScan:

  1. ** 自动扫描注解,创建和装配bean对象。**

3) @EnableAutoConfiguration:

  1. **① 从注解一路向里走**![](https://i-blog.csdnimg.cn/direct/fad010d741bf4c189265cd392a7c43ec.png)
  2. ** 在这里找到了所有的配置类的全限定名称,springboot根据这个List集合中的全限定名称找到对应的类,通过反射创建对象。**

  1. ** 所有的启动器文件中都包含了一个 这样的autoconfigure包;**
  2. ![](https://i-blog.csdnimg.cn/direct/26fbd6d531bb4a8e960e146d373fdd24.png)![](https://i-blog.csdnimg.cn/direct/d6dd1f8f834f4d71a39f437566f1196e.png)
  3. ** ④在autoconfigure包中的spring.factories中包含了该启动器中配置类的全限定名称。**

二、SpringApplication.run(MyApplication.class,args)方法:

  1. run()方法中进入该静态类中

** run()方法最终创建了一个new SpringApplication()对象**

  1. ** 这个SpringApplication对象调用了重载的run()方法:**

** 用来加载相关配置然后整个项目启动。**

标签: spring boot java spring

本文转载自: https://blog.csdn.net/weixin_45939821/article/details/141160120
版权归原作者 别挡 所有, 如有侵权,请联系我们删除。

“springBoot框架”的评论:

还没有评论