-
在某些情况下,需要注册多个相同类型的bean
public class TestPrimary { private String name; }
@Configuration public class Config { @Bean public TestPrimary testPrimary(){ return new TestPrimary(); } @Bean public TestPrimary testPrimary1(){ return new TestPrimary(); } }
可以看到我们往spring容器中注册了两个相同类型的Bean:TestPrimary ,但是他们的beanName不一样,因此我们如果通过beanName去获取bean是不会报错的。
public class Test { public static void main(String[] args) throws IOException { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringAnnotationTest.class); TestPrimary testPrimary = (TestPrimary)context.getBean("testPrimary"); System.out.println(testPrimary); TestPrimary testPrimary1 = (TestPrimary)context.getBean("testPrimary1"); System.out.println(testPrimary1); } }
打印输出:
但是,如果我们通过 TestPrimary.class 去获取bean,则会报错
此时,因为我们由于业务场景需要,确实需要注册多个相同类型的bean,那么只能通过@Primary注解解决该问题
该注解的作用也就是:当注册了多个相同类型的bean时,如果按照.class去获取bean,则默认使用被注解修饰的去获取bean
spring使用@Primary注解
最新推荐文章于 2024-07-25 19:48:48 发布