@Component与@Configuration区别联系
在配置类的方法间调用时
- @Component每次调用获取的都是新的实体
- @Configuration每次调用返回的是同一个实体Bean(动态代理)
- 代码实现
@Component
@Configuration@Component @ComponentScan("nuc.ss.pojo") public class MyConfig { @Bean public User user() { return new User();//就是要返回注入到bean的对象! } @Bean public User getUser() { return user(); } }
测试@Configuration @ComponentScan("nuc.ss.pojo") public class MyConfig { @Bean public User user() { return new User();//就是要返回注入到bean的对象! } @Bean public User getUser() { return user(); } }
结果@Test public void test1() { ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class); User getUser = context.getBean("getUser", User.class); User user = context.getBean("user", User.class); System.out.println(getUser == user); }
- 使用@Component的结果为false
- 使用@Configuration的结果为true
注意:@Configuration注解的配置类有如下要求:
- @Configuration不可以是final类型;
- @Configuration不可以是匿名类;
- 嵌套的configuration必须是静态类。
具体区别详见这两个连接,个人认为总结的比较全面
- configuration和component的区别:https://www.jb51.net/article/153430.htm
- @Configuration和@Component注册的@Bean:https://blog.csdn.net/qq_38951372/article/details/89345134