- 回顾spring
- 优点
- 缺点
- springboot概述
- 特点
- 核心功能
- SpringBoot搭建
- springboot配置文件
- 全局配置文件
- springboot自动配置
- springboot集成JDBC
- springboot整合阿里数据源
- SpringBoot集成mybatis
- 日志打印
- 开源,轻量级,非侵入式的一站式框架,简化企业级应用开发。
- 控制反转(IOC),依赖注入(DI)降低了组件之间的耦合性,实现了软件各层之间的解耦。
- 面向切面(AOP),利用它可以很容易实现一些拦截,如事务控制等。
- spring对于主流的应用框架提供了很好的支持,例如mybatis。
- spring提供有自己的mvc实现。
- 虽然spring的组件代码是轻量级的,但它的配置却是重量级的。虽然spring引入了注解功能,但是仍然需要编写大量的模板化配置文件.
- 项目的依赖管理也是一件耗时耗力的事情,在环境搭建时,需要分析要导入大量库的坐标,而且还需要分析导入与之有依赖关,一旦选错依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
Spring Boot对上述spring的缺点进行的改善和优化,基于约定优于配置的思想.可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。
springboot概述 Spring Boot是由Pivotal团队提供的在spring框架基础之上开发的框架,其设计目的是用来简化应用的初始搭建以及开发过程。
Spirng Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具.
Spring Boot以约定大于配置的核心思想,从而使开发人员不再需要定义样板化的配置。它集成了大量常用的第三方库配置(例如Redis,Jpa RabbitMQ,Quartz等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用,通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。
Spring Boot你只需要“run”就可以非常轻易的构建独立的、生产级别的spring应用。
我们为spring平台和第三方依赖库提供了一种固定化的使用方式,使你能非常轻松的开始开发你的应用程序。大部分SpringBoot应用只需要很少的配置。
特点- 创建独立的spring应用程序
- 直接内嵌tomcat、jetty和undertow
- 提供了固定化的“starter”配置,以简化构建配置
- 尽可能的自动配置spring和第三方库
- 提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
- 绝对不会生成代码,并且不需要XML配置
起步依赖
起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
自动配置
Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。
SpringBoot搭建- 上spring官网 spring.io
- 点击quickstart
- 选择项目依赖点击生成项目
Springboot集成web组件后,内置了tomcat服务器,一个springboot应用相当于一个独立的服务,可以使用启动类中的main方法启动springboot程序.
springboot配置文件 全局配置文件1 、application.properties文件
spring启动默认读取,属性文件格式,内容为键值对形式 server.port=8080
2、application.yml文件
代替application.properties文件
- 空格不能省略
- 以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
- 属性和值的大小写都是十分敏感的。
server:
port: 8086
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/tomorrowNews_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 152475
type: com.alibaba.druid.pool.DruidDataSource
filters: stat
main:
allow-circular-references: true #允许循环依赖
mybatis:
type-aliases-package: com.ff.springboot.model
mapper-locations: classpath:mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
logging:
level:
com.ff.springboot.dao: trace
file:
name: F:\test\logs\log.log
注入自定义配置文件:
yaml文件更强大的地方在于,他可以给我们的实体类直接注入匹配值!
将yml中配置好的属性值注入到实体类中(person)
加入注解标签
@Component //注册bean
@ConfigurationProperties(prefix = “person”)
- 将配置文件中配置的每一个属性的值,映射到这个组件中;
- 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
- 参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
Springboot实现自动装配的核心仍然是使用注解标签
@MapperScan("com.ff.springboot.dao")
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
@SpringBootApplication : 是Spring Boot 项目的核心注解 主要目的是开启自动配置
组合注解,主要组合了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan
@ComponentScan它默认扫描的是与该类同级的类或者同级包下的所有类.
@SpringBootConfiguration,通过源码得知它是一个@Configuration,相当于之前的配置文件功能.
@EnableAutoConfiguration自动加载配置项的核心注解
点开其源码
@import({AutoConfigurationimportSelector.class})
可根据我们在pom.xml文件中配置来加载对应的组件
是这里最重要的注解,它实现了对Spring Boot应用自动装配的功能。@EnableAutoConfiguration是利用SpringFactoriesLoader机制加载自动装配配置的,它的配置数据在meta-INF/spring.factories中,我们打开spring-boot-autoconfigure jar中的该文件,发现对应着许多个XXXAutoConfiguration配置类.
@Configuration
加入@Configuration 注解,表明这就是一个配置类。有一个myBean()的方法并用@Bean 进行注释,返回一个MyBean()的实例,表明这个方法是需要被Spring进行管理的bean。@Bean 如果不指定名称的话,默认使用myBean名称,也就是小写的名称。
@Bean
相当于XML中的< bean> < /bean>,放在方法的上面,而不是类,意思是产生一个bean对象,并交给spring管理。
一句话总结 :根据当前不同的条件判断,决定这个配置类是否生效!
- 一但这个配置类生效;这个配置类就会给容器中添加各种组件;
- 这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;
- 所有在配置文件中能配置的属性都是在xxxxProperties类中封装着;
- 配置文件能配置什么就可以参照某个功能对应的这个属性类
SpringbootApplication是springboot项目的启动项,springboot项目在启动时会扫描同级包下的所有类。
带有@Configuration注解标签的被视为配置类,配置类中的方法可以通过@ConfigurationProperties(prefix = “spring.datasource”)这一注解标签加载配置yml文件中的配置属性,再通过@Bean标签交给spring管理,这样spring在启动的时候就会自动加载所有的配置。
springboot集成JDBC-
导jar坐标
org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java -
在yml配置文件中配置连接属性
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/tomorrowNews_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root -
就可以注入JdbcTemplate使用了
Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用
-
导jar坐标
com.alibaba druid 1.1.10 -
在yml文件中注册阿里数据库连接池
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource filters: stat initialSize: 5 minIdle: 1 maxActive: 20 -
创建DruidDataSourceConfig配置类
@Configuration public class DruidDataSourceConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource druid() { return new DruidDataSource(); } @Bean public ServletRegistrationBean druidStatViewServlet() { //ServletRegistrationBean提供类的进行注册 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid @Bean public FilterRegistrationBean druidStatFilter() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); //添加过滤规则 filterRegistrationBean.addUrlPatterns("/*"); //添加需要忽略的格式信息 filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif," + "*.jpg,*.png, *.css,*.ico,/druid/*"); return filterRegistrationBean; } }可通过访问 http://localhost:9999/druid/login.html对sql进行监控
-
导jar坐标
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.4 -
配置yml属性
mybatis: type-aliases-package: com.ff.springboot.model #别名 mapper-locations: classpath:mapper/*Mapper.xml #mapper位置 configuration: map-underscore-to-camel-case: true #驼峰映射 cache-enabled: true #二级缓存 -
在SpringbootApplication类中添加注解@MapperScan(“com.ff.springboot.dao”)
指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
-
其余和之前spring相同
-
在yml文件中配置属性
logging: level: com.ff.springboot.dao: trace file: name: F:\test\logs\log.log -
创建log4j.properties文件
log4j.rootLogger = debug,stdout,D #System out Console 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 = [%p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n #System out File log4j.appender.D = org.apache.log4j.FileAppender log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = F:/test/logs/log.log log4j.appender.D.Append = true log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] -[%l] %m%n



