@SpringBootApplication拓展
一. @SpringBootConfiguration注解
是SpringBoot的注解, 标识一个类为配置类, 与@Configration功能一致
run方法初始化了@SpringBootConfiguration注解
注解源码
@Target(ElementType.TYPE)//类型
@Retention(RetentionPolicy.RUNTIME)//生命周期
@Documented
@Configuration
public @interface SpringBootConfiguration {
@AliasFor(annotation = Configuration.class)
boolean proxyBeanMethods() default true;
}
指定代理@bean
代码
@SpringBootConfiguration
public class MyConfig {
@Bean
public MyBean getMyBean() {
return new MyBean("Hello! Spring Boot");
}
}
@Configration
是spring的注解, 用于标记一个类为配置类,表示该类包含Bean的定义。
代码
@Configuration
public class MyConfig {
@Bean
public MyBean mybean(){
return new MyBean (1,"mybean");
}
}
二. @ComponentScan
@ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。
代码
@Configuration
@ComponentScan(value = "com.bite.principle.config")
public class MyConfig {
@Bean
public MyBean mybean(){
return new mybean("mybean",1);
}
三. @EnableAutoConfigration
根据项目依赖和配置,自动配置 Spring Boot 应用程序中的 Bean。
@AutoConfigurationPackage
添加该注解的类所在的package 作为 自动配置package 进行管理。
注解源码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class}) // 导入Registrar中注册的组件
public @interface AutoConfigurationPackage {
}
从上述源码可以看出,@AutoConfigurationPackage注解的功能是由 @Import 注解实现的,它是spring框架的底层注解,它的作用就是给容器中导入某个组件类.
@Import
@Import通过快速导入的方式实现把实例加入spring的IOC容器中
@Import注解可以用于导入第三方包 ,当然@Bean注解也可以,但是@Import注解快速导入的方式更加便捷
@Import(importDemo.class)
public class TestDemo {
}