SpringBoot原理简述

一、定义

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值