当前位置: 首页 > 工具软件 > Spring Boot > 使用案例 >

SpringBoot简述

储俊英
2023-12-01

一、什么是SpringBoot

     springboot 是 spring 项目中的一个子工程,也被称为搭建程序的脚手架,可以快速的构建spring项目。boot相对于之前的spring 主要解决了两个问题,
      复杂的配置和混乱的依赖管理(不同的jar包版本兼容问题)。


二、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:

    1. @Autowired注入     (全局变量加注解直接注入)

    2. 构造函数注入 (定义一个去全局变量 ,构造函数里给这个变量赋值)

    3.  @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的运行日志

 类似资料: