• 【Spring boot】SpringApplication三板斧


    SpringBoot程序启动入口的核心注解@SpringBootApplication,这个注解是由三部分组成:

    1.  @SpringBootConfiguration,这个注解主要是继承@Configuration注解,主要用于加载配置文件。
    2.  @ComponentScan,主要用于组件扫描和自动装配。
    3.  @EnableAutoConfiguration,这个注释启用了Spring Boot的自动配置功能,可以自动为您配置很多东西。

    一、@EnableAutoConfiguration

    作用

    启用了Spring Boot的自动配置功能,根据你pom.xml引入的xxx-boot-starter可以自动为配置很多东西。

    流程图

    • 我们引入starter的依赖,会将自动配置的类的jar引入。
    • @SpringBootApplication的注解中有一个是@EnableAutoConfiguration注解,这个注解有一个@Import({EnableAutoConfigurationImportSelector.class}),
    • EnableAutoConfigurationImportSelector内部则是使用了SpringFactoriesLoader.loadFactoryNames方法进行扫描具有META-INF/spring.factories文件的jar包。
    • 应用在启动时就会加载spring-boot-autoconfigure的jar包下面的META-INF/spring.factories文件中定义的autoconfiguration类。
    • 将configuration类中定义的bean加入spring到容器中。就相当于加载之前我们自己配置组件的xml文件。而现在SpringBoot自己定义了一个默认的值,然后直接加载进入了Spring容器。
    • spring-boot-autoconfigure的jar包里面通过condition的方式判断是否将xxxx-starter(比如aop、jdbc。。。)初始化。(pom.xml引入了jar包才能初始化)。

    二、@ComponentScan

    作用

    根据定义的扫描路径,把符合扫描规则的类装配到spring的bean容器中。

    • 自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器
    • 通过includeFilters加入扫描路径下没有以上注解的类加入spring容器
    • 通过excludeFilters过滤出不用加入spring容器的类
    • 自定义增加了@Component注解的注解方式

    使用方法

    basePackages与value: 用于指定包的路径,进行扫描

    @ComponentScan(basePackages = “”)     //单个
    @ComponentScan(basePackages = {“qqq”,“www”,“…”})   //多个
    @ComponentScan("com.baker.learning.*")   //通配符匹配所有的包

    basePackageClasses: 用于指定某个类的包的路径进行扫描

    @ComponentScan(basePackageClasses = “”)   //单个
    @ComponentScan(basePackageClasses = {“qqq”,“www”,“…”})  //多个

    nameGenerator: bean的名称的生成器

    useDefaultFilters: 是否开启对@Component,@Repository,@Service,@Controller的类进行检测

    includeFilters: 包含的过滤条件 FilterType.ANNOTATION:按照注解过滤,FilterType.ASSIGNABLE_TYPE:按照给定的类型,FilterType.ASPECTJ:使用ASPECTJ表达式,FilterType.REGEX:正则,FilterType.CUSTOM:自定义规则

    excludeFilters: 排除的过滤条件,用法和includeFilters一样

    scopedProxy

    resourcePattern

    scopeResolver

    三、@SpringBootConfiguration

    作用

    SpringBootConfiguration是一个组合注解,SpringBootConfiguration注解可以实现spring中xml配置文件配置的效果,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。(也可以重新指定)。

    @SpringBootConfiguration
    public class RestTemplateConfig {
        /**
         * 设置
         *
         * @param factory
         * @return
         */
        @Bean
        public RestTemplate restTemplate(HttpComponentsClientHttpRequestFactory factory) {
            return new RestTemplate(factory);
        }
    
        @Bean
        public HttpComponentsClientHttpRequestFactory simpleClientHttpRequestFactory() {
            HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
            //达到最大请求时间,请求将自动视为失败,结束当前进程。
            factory.setReadTimeout(20000);  //单位为ms
            factory.setConnectTimeout(20000); //单位为ms
            return factory;
        }
    
    }
  • 相关阅读:
    jquery 读取file 图片文件的宽高
    log4net配置要点
    js 公用插件,教科书级的写法
    mvc4 发布,遇到 403.14 问题,并且iis提示打开目录浏览。。。解决办法
    js 处理 html 标签转义 处理json中含有的ascii 编码
    sqlserver ,left join 不仅可以join表,还可以是一个结果集
    .net MVC3 页面和 action 传值问题
    java web工程 数据库操作报驱动类找不到的错误
    MySQL快速构造百万数据
    python之eval函数的应用实例
  • 原文地址:https://www.cnblogs.com/kbian/p/12804732.html
Copyright © 2020-2023  润新知