一、@Configuration
此注解有两种使用模式,默认情况下,是Full模式。
(1).Full模式
@Configuration(proxyBeanMethods = true)
- 配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式
(2).Lite模式
@Configuration(proxyBeanMethods = true)
- 配置 类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断
/** * 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的 * 2、配置类本身也是组件 * 3、proxyBeanMethods:代理bean的方法 * Full(proxyBeanMethods = true)、【保证每个@Bean方法被调用多少次返回的组件都是单实例的】 * Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】 * */ @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件 public class MyConfig { /** * Full:外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象 * @return */ @Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例 public User user01(){ User zhangsan = new User("zhangsan", 18); //user组件依赖了Pet组件 zhangsan.setPet(tomcatPet()); return zhangsan; } @Bean("tom") public Pet tomcatPet(){ return new Pet("tomcat"); } }
二、@Bean、@Component、@Controller、@Service、@Repository、@Autowired
@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。
@Component泛指各种组件
@Controller控制器
@Service业务逻辑层组件
@Repository数据库层组件
@Autowired 是我们使用得最多的注解,其实就是 autowire=byType 就是根据类型的自动注入依赖(基于注解的依赖注入),可以被使用再属性域,方法,构造函数上
三、@ComponentScan、@Import
@ComponentScan 通过包扫描指定
@Import 引入
四、@Conditional
条件装配:满足Conditional指定的条件,则进行组件注入
五、@ImportResource
原生配置文件引入