浅谈SpringBoot的特性与实现

125 阅读2分钟

一 前言

轮道者甚繁,做而行者盖寡 写博客更倾向于理论,理论是一个引路者,只是听理论很难有大的突破,所以我想通过这一系列文章,更多的产生实际的效果,希望对springboot的学习有更深刻的认识

二 Spring的成长

谈及springboot一定就会想到spring,更多人会认为springboot是spring的升级版本,但是具体有哪些升级呢,这里就来说一说,spring的成长

1 spring的缺点

谋定而后动,所有语言中java的市场最大,java中spring又是当之无愧的大哥,为什么他是大哥呢,可能就是被说的滚瓜烂熟的IOC和AOP,那再具体点呢,可能阅读源码的人会知道,Spring对事务进行了抽象,使用了AOP使事务编程变得很简化,还有springMVC让web编程如丝般顺滑。 那他的缺点呢,如果经理过spring低版本开发的人一定知道,要很多的配置文件,还要配置tomcat,因为他本身并不具备启动的功能,所以就出现很多繁琐的配置,于是,他并不完美。 谋定就是要谋他的问题,后动就是改造他,让他成长的更强大,于是springboot登场了。

三 SpringBoot

  1. 特性

    • 创建独立的spring应用
    • 直接创建TOMCAT,Jetty等web容器
    • 提供固化的star,简化构架配置
    • 当条件满足时自动装配Spring或第三方类库
    • 提供运维
    • 不需要xml配置

    值得一提的是springboot2.0 必须是jdk8

  2. 特性实现

    1. 直接创建TOMCAT,Jetty等web容器,提供固化的star

      FE:使用JETTY作为容器,排除tomcat star依赖使用jetty依赖

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
        <!-- Exclude the Tomcat dependency -->
           <exclusion>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
           </exclusion>
        </exclusions>
        </dependency>
      
        <!-- Use Jetty instead -->
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
      
    2. 自动装配

    官网的解释是,尝试去装配class path下开发人员添加的jar依赖,不一定装配。 使用@EnableCoinfigurtion注解来开启自动装配,而@EnableCoinfigurtion注解是由引导类@SpringbootApplication注解激活的,同时他还激活@ComponentScan以及@Configuration

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(
        excludeFilters = {@Filter(
        type = FilterType.CUSTOM,
        classes = {TypeExcludeFilter.class}
    ), @Filter(
        type = FilterType.CUSTOM,
        classes = {AutoConfigurationExcludeFilter.class}
    )}
    )
    public @interface SpringBootApplication {