@SpringBootApplication注解
springboot是基于spring的新型的轻量级框架,最厉害的地方当属**自动配置。**那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置
@SpringBootApplication//标注在某个类上,表示这个类是SpringBoot的启动类
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringApplication.run)最为耀眼,所以要揭开SpringBoot的神秘面纱,我们要从这两位开始就可以了。
@SpringBootConfiguration//表示当前类是一个IoC容器的配置类
@EnableAutoConfiguration //开启SpringBoot自动装配功能
@ComponentScan(excludeFilters = {// 扫描路径设置
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes =AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}
1.@SpringBootConfiguration注解
包括了@Configuration,配合@Bean代替xml配置文件的形式注入bean:
a)xml配置文件的形式注入bean
<bean id="mockService" class="..MockServiceImpl">
...
</bean>
b)注解配置形式注入bean
@Configuration
public class MockConfiguration{
/*
*任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IoC容器,方法名将默认成该
*bean定义的id。
*/
@Bean
public MockService mockService(){
return new MockServiceImpl();
}
}
2.@EnableAutoConfiguration注解
@EnableAutoConfiguration:开启SpringBoot自动装配功能
@AutoConfigurationPackage//将标注@SpringBootApplication的类所在包及子包里所有组件扫描到IOC容器
@Import(EnableAutoConfigurationImportSelector.class)//借助@Import将配置类注入到IOC容器
public @interface EnableAutoConfiguration {
...
}
2.1.@AutoConfigurationPackage注解
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {
}
AutoConfigurationPackages.Registrar.class将启动类(@SpringBootApplication标注的类)的所在包及子包里面所有组件扫描到Spring容器;
2.2.@Import注解
EnableAutoConfigurationImportSelector读取META-INF/spring.factories的值,将这些值作为配置类加载到IOC容器中,帮助我们进行自动配置工作。
3.@ComponentScan
我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从@ComponentScan所在类的package进行扫描。
原文地址:https://blog.csdn.net/weixin_57445851/article/details/135717562
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_61233.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!