一、定义
Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它简化了Spring应用程序的创建和开发过程,使开发人员能够更快速地创建独立的、生产就绪的Spring应用程序。它采用了“约定优于配置”的原则,尽可能地减少开发人员需要进行手动配置的步骤,提供了自动配置和快速开发的功能,从而让开发人员可以更加专注于业务逻辑的开发。
Spring Boot包含许多开箱即用的特性,如嵌入式Web服务器、自动配置、约定优于配置、命令行界面等。这些特性可以使开发人员更加容易地开发和部署应用程序,并且可以与其他Spring框架的组件(如Spring Data、Spring Security等)进行无缝集成。
二、boot 特点:
内置tomcat,jetty和undertow(不需要打包成war包部署)
提供了固定的starter配置,简化构建配置
自动配置spring和第三方库
三、boot要知道的注解:
1、@EnableAutoConfiguration 开启自动配置(比如引用了`spring-boot-starter-web`,而这个启动器中帮我们添加了`tomcat`、`SpringMVC`的依赖。)
2、@ComponentScan 开启注解扫描,(> 通过basePackageClasses或者basePackages属性来指定要扫描的包。
如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包
而我们的@ComponentScan注解声明的类就是main函数所在的启动类,因此扫描的包是该类所在包及其子包)
3、@SpringBootApplication,发现@SpringBootApplication其实是一个组合注解,这里重点的注解有3个:
- @SpringBootConfiguration :申明是个配置类
- @EnableAutoConfiguration:开启自动配置
- @ComponentScan:开启注解扫描
四、boot的属性注入
1、新建JdbcProperties,用来进行属性注入:
在类上通过@ConfigurationProperties注解声明当前类为属性读取类
prefix="jdbc"读取属性文件中,前缀为jdbc的值。
在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致,并且必须具有getter和setter方法
2、在JdbcConfiguration中使用这个属性:
通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象
然后你可以通过以下方式在JdbcConfiguration类中注入JdbcProperties:
@Autowired注入 (全局变量加注解直接注入)
构造函数注入 (定义一个去全局变量 ,构造函数里给这个变量赋值)
@bean方法的参数注入 (类上加注解@EnableConfigurationProperties 参数传递定义的配置类)
五、boot的配置:
使用类和一些注解来达到和xml一样的效果,典型的几个:
1、@Configuration`:声明一个类作为配置类,代替xml文件
2、@Bean`:声明在方法上,将方法的返回值加入Bean容器,代替`<bean>`标签
3、@Value`:属性注入
4、@PropertySource`:指定外部属性文件。
六、添加一个拦截器:
拦截器interceptor比较实用,例如记录某个接口的访问过程等,
1、定义一个拦截器类,实现handlerInterceptor 接口,重写该接口的方法 请求前 请求后 post请求 拦截做一些操作。
@Component
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle method is running!");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle method is running!");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion method is running!");
}
}
2、定义一个配置类,注册定义好的拦截器,实现webmvcConfigr接口,重写 addInterceptor方法,添加进去。
@Configuration
public class MvcConfiguration implements WebMvcConfigurer {
@Autowired
private HandlerInterceptor myInterceptor;
/**
* 重写接口中的addInterceptors方法,添加自定义拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}
3、运行并查看日志:
preHandle method is running!
postHandle method is running!
afterCompletion method is running!
你会发现日志中只有这些打印信息,springMVC的日志信息都没有,因为springMVC记录的log级别是debug,springboot默认是显示info以上,我们需要进行配置。
SpringBoot通过logging.level.*=debug来配置日志级别,*填写包名
# 设置org.springframework包的日志级别为debug
logging.level.org.springframework=debug
就可以看到mvc的运行日志