Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。
@Service
public class BeanTest {
@Bean
public BeanTest getBean(){
BeanTest bean = new BeanTest();
System.out.println("调用方法:"+bean);
return bean;
}
}
public class Main {
@SuppressWarnings(“unused”)
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(“application-context.xml”);
Object bean1 = context.getBean("getBean");
System.out.println(bean1);
Object bean2 = context.getBean("getBean");
System.out.println(bean2);
}
}
输出:
调用方法:Spring.BeanTest@5a4041cc
Spring.BeanTest@5a4041cc
Spring.BeanTest@5a4041cc
默认bean的名称就是其方法名。但是也可以指定名称:
@Service
public class BeanTest {
@Bean(name="BeanTest")
public BeanTest getBean(){
BeanTest bean = new BeanTest();
System.out.println("调用方法:"+bean);
return bean;
}
}
public class Main {
@SuppressWarnings(“unused”)
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(“application-context.xml”);
Object bean1 = context.getBean("BeanTest");
System.out.println(bean1);
Object bean2 = context.getBean("BeanTest");
System.out.println(bean2);
}
}
使用@Bean注解的好处就是能够动态获取一个Bean对象,能够根据环境不同得到不同的Bean对象。或者说将Spring和其他组件分离(其他组件不依赖Spring,但是又想Spring管理生成的bean)。
本文介绍Spring框架中的@Bean注解用途及使用方式。该注解使方法可以创建并返回一个由Spring管理的Bean对象,该对象将被放置在Spring的IOC容器中。文章还展示了如何通过@Bean注解来实现动态获取Bean对象,以及如何指定Bean对象的名称。
470

被折叠的 条评论
为什么被折叠?



