Spring 注解@Bean参数疑点

Posted wayn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 注解@Bean参数疑点相关的知识,希望对你有一定的参考价值。

经常会看到通过@Bean注解来产生一个Java bean放进Spring的IOC容器,可是有的方法里带有参数,那么这些参数从何而来?

答案是,他们会自动从容器中查找该类型的bean,如果没有将会报错。

我写着这样一个简单的测试类

@Configuration
public class SampleBean {
    private String value;
 
    public SampleBean() {
    }
 
    public SampleBean(String value) {
        this.value = value;
    }
    public String getValue() {
        return value;
    }
 
    public void setValue(String value) {
        this.value = value;
    }
    
    @Bean("testInteger")
    public Integer testBean(BeanParamClass test) {
    	return new Integer(0);
    }
}
@Component
public class BeanParamClass {

}
@Test
    public void testBean() {
        Integer t = (Integer)ctx.getBean("testInteger");
        System.out.println("value="+t);
    }

运行结果:

技术图片

 

再尝试不生成@Bean的参数BeanParamClass ,即将@@Component注释。

结果:

技术图片

 

 可以看到,程序启动时会抛出UNsatisfiedDependencyException,也就是无法找到@Bean("testInteger")的依赖bean。

 

以上是关于Spring 注解@Bean参数疑点的主要内容,如果未能解决你的问题,请参考以下文章

如何获取spring 注解的bean

spring注解式参数校验

Spring高级注解

Spring @Bean注解 (基于java的容器注解)

Spring使用ioc注解方式配置bean

限定符注解