spring-boot入门环境

POM

1.父项目(用来管理spring-boot应用管理的所有依赖版本)-- spring-boot的依赖版本仲裁中心,以后导入jar包默认是不需要写版本的(当然没有在dependencies管理的依赖还是需要声明版本号的)

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
    </parent>

2.导入依赖 

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 </dependencies>
spring-boot-starter:spirng-boot场景启动器
spring-boot-starter-web:帮我们导入了web项目正常运行所需要的组件
例如

   spring-boot-starter-mail:帮我们导入了项目发送邮件等所需要的组件

 

/**
 * @SpringBootApplication 用来标注一个主程序类,说明这个一个Spring boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args){
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

点进去查看 @SpringBootApplication可以发现它的父注解

@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 {
}

1.@SpringBootConfiguration: Spring boot的配置类注解;标注在某个类上,表明这是spring boot的配置类

点进@SpringBootConfiguration 可以看到 @Configuration:配置类上来标注这个注解。

配置类(类似xml之类的配置文件):配置类也是容器的一个组件:@Component

 

2.@EnableAutoConfiguration: 开始自动配置,以前我们需要手动配置的东西,spring-boot帮我们配置好,@EnableAutoConfiguration告诉spring boot开启自动配置功能。

点击去@AutoConfigurationPackage:自动配置包

点进去@Import({Registrar.class}):spring低沉注解,给容器导入一个中间件。导入的组件由AutoConfigurationPackage.Registrar.class

作用:将@SpringBootConfiguration标注的所有包的所有组件扫码到spring容器。(我觉得类似spring的注解扫描 <context:component-scan >)

将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的的所有组件扫描到spring容器。

@SpringBootConfiguration标注下的类下的所有包都会被扫码,例如不在@SpringBootConfiguration标注下的类的包和类就不会被扫码进去。

 

3.@Import({AutoConfigurationImportSelector.class})

给容器导入组件
AutoConfigurationImportSelector:导入哪些组件的选择器;
将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中。
会给容器中导入非常多的自动配置类(xxxAutoConfiguration):就是给容器中导入这个场景需要的所有组件,并配置好这些组件。

  SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());

  Spring Boot启动的时候从类路径下的META-INF/Spring.factories中获取EnableAutoConfiguration指定的值,将这些值自动配置类导入到容器中,自动配置类就生效了,帮我们进行自动配置的工作。

 

 

  J2EE的整体解决方案和自动配置都在spring-boot-autoconfigure-2.0.2.RELEASE.jar中。

  

 

 

 

 

 


 

  

 

 

posted @ 2018-06-07 18:59  宋songsong  阅读(111)  评论(0编辑  收藏  举报