为什么启动类被【@SpringBootApplication】注解后,就会自动扫描其包内所有被【@Component】注解的类?

1、因为【@SpringBootApplication】又被【@ComponentScan】注解。

2、注解【@ComponentScan】有一个属性【useDefaultFilters】,并且默认值为【true】。

3、Spring初始化时会将启动类加入上下文的【BeanFactory】中,然后进行后置处理器的处理。

4、后置处理器中有一个默认的配置类后置处理器。

5、在配置类后置处理器中,有一个能否加入候选配置类集合的判断,判断依据为该类是否被【@Configuration】注解。

原文地址:https://www.cnblogs.com/StarkBrothers/p/12109620.html

时间: 2024-10-24 22:38:07

为什么启动类被【@SpringBootApplication】注解后,就会自动扫描其包内所有被【@Component】注解的类?的相关文章

Spring @Component 注解的使用

使用说明 这个注解用于声明当前的类是一个组件类,Spring 会通过类路径扫描来自动侦测和自动装配这些组件,创建一个个 bean 后,注册到 Spring 容器中. 带 @Component 注解的类和自动创建的 bean 之间存在隐式的一对一映射关系.由于只需要声明一个注解,其他过程都是自动化的,所以对 bean 的创建过程可控程度较低. 该注解相当于: <bean id="useService" class="com.test.service.UserService

[转] ASP.NET WEB API程序在VS启动或发布到IIS后启动后发生 - Could not load file or assembly &#39;System.Web.Http.WebHost’异常,无法正常访问

Just do Copy Local = true in the properties for the assembly(System.Web.Http.WebHost) and then do a redeploy, it should work fine. http://stackoverflow.com/questions/20323107/could-not-load-file-or-assembly-system-web-http-webhost-after-published-to-

一个空类被编译器编译后产生了哪些默认函数

为何空类的大小不是0呢? 为了确保两个不同对象的地址不同,必须如此. 类的实例化是在内存中分配一块地址,每个实例在内存中都有独一无二的二地址. 同样,空类也会实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化后就有独一无二的地址了. 所以,空类的sizeof为1,而不是0. 一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function, 如果你写 class A{}; 编译器处理后,就相当于: class A { public: A()

配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台乱码

配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台出现乱码 解决方法: 在idea的bin目录(如:D:\JetBrains\IntelliJ IDEA 2018.1.4\bin)下找到idea.exe.vmoptions和idea64.exe.vmoptions两个文件 文件的内容大致如下,是jvm参数 编辑这两个文件在文件中增加一行-Dfile.encoding=UTF-8 重启IDEA即可 原文地址:https://www.cnblogs.com/niuz

自定义注解并封装成jar包,实现一般方法和Controller类的入参、出参和执行时间的日志打印

项目源码url: https://github.com/zhzhair/logaop-spring-boot.git. 1.根据spring aop和spring boot封装自动打印运行时间,入参,出参的注解 aop-spring-boot:封装的一般方法和controller类的日志打印注解: exercise:引用封装好的jar包依赖实现一般方法和controller类的日志打印功能: pers:封装的jar包依赖,直接放到maven仓库就可以用.[email protected]实现一般

springboot启动成功但是debug出现后面的Connected to the target VM, address: &#39;127.0.0.1:53340&#39;, transport: &#39;socket&#39;

springboot启动成功但是debug出现后面的Connected to the target VM, address: '127.0.0.1:53340', transport: 'socket' 打开Breakpoints面板 ctrl + shift + F8 进入 或者 工具栏 run -->view Breakpoints... 把打勾全去掉 虽然还是有上面的问题,但是项目能正常运行了 解决参照:https://blog.csdn.net/gcj729027291/article/

Spring boot之SpringApplicationBuilder,@@Configuration注解,@Component注解

SpringApplicationBuilder: 该方法的作用是可以把项目打包成war包 需要配置启动类,pom.xml文件等,具体见:http://blog.csdn.net/linzhiqiang0316/article/details/52601292 @SpringBootApplication public class FavoritesApplication extends SpringBootServletInitializer{ /** * 如此配置打包后可以用tomcat下使

Spring 通过注解定义Bean以及自动扫描注解定义的bean ComponentScan 自动扫描组件&amp;指定扫描规则

不管是xml还是注解,他们都是表达bean定义的载体,其实质都是为Spring容器提供Bean定义的信息,在表现形式上都是讲xml定义的内容通过类注解进行描述. Spring容器成功启动的三大要件分别为:bean定义信息,bean实现类,spring本身. 如果采用基于xml的配置,则bean定义信息和bean实现类本身是分离的:而如果采用基于注解的配置文件,则bean定义信息通过在bean实现类上标注注解实现. @Controller:用于对Controller实现类进行标注 @Reposit

Spring中@Component注解,@Controller注解详解(网摘)

在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会采用Spring提供的自动扫描注入的方式, 只需要添加几行自动注入的的配置,便可以完成Service层,Controller层等等的注入配置. 使用过程中,在Service层中的实现类头上加@Compopnet注解,在Controller类头加@Controller注解,便完成了配置. 例如 在Controller中当我们调用某个Service时就不需要Set方法了,直接通过@Autowried 注解对Service