2012-06-30 107 views
0

我使用@Configuration创建豆类和其他bean的属性设置其属性,例如,可以使用XML配置@Configuration和Bean属性设置注解

@Configuration 
public class AppConfig { 

    @Bean 
    public MyBean myBean(@Value("#{someObject.value}") double value) { 
     MyBean myBean = new MyBean(); 
     myBean.setValue(value); 
     return myBean; 
    } 

    @Bean 
    public SomeObject someObject() { 
     SomeObject someObject = new SomeObject(); 
     someObject.setValue(1.0); 
     return someObject; 
    } 
} 

然而,很繁琐和不必要的有使用setter方法[例如。 myBean.setValue(值)。相反,我想要这样的东西:

@Configuration 
public class AppConfig { 

    @Bean 
    @MysticalPropertySetter(name="value", value="#{someObject.value}") 
    public MyBean myBean() { 
     return new MyBean(); 
    } 

    @Bean 
    @MysticalPropertySetter(name="value", value="1.0", type="java.lang.Double") 
    public SomeObject someObject() { 
     return new SomeObject(); 
    } 
} 

任何这样的可能吗?非常感谢!!!

回答

0

我认为这种方法是不可能的,因为在用@Bean注释的工厂方法中手动创建了对象,但Spring只能将属性注入到本身实例化的bean中。

+0

Spring应该能够在从工厂方法返回之后设置bean *上的属性。我没有看到一个问题,如果还没有实施,这一定是可能的。 –

+0

可能是我错了,但我从未见过或听说过这样的未来。据我所知,Spring只是在工厂方法返回后才将对象注册到容器中。如你所述,它没有给出在返回后设置属性的可能性。你只能传递属性作为工厂方法的输入参数,并像你一样手动设置它们。 (当你使用xml配置时,类似的事情)。 – dimas

+0

顺便说一下,我再次检查了Spring参考文档,发现它们在它们的示例中还使用@Value注释在Configuration类中注入了属性值,然后在工厂方法中将它们手动设置为cteated类。 – dimas

0

构造函数注入如何?

@Bean 
public MyBean myBean(@Value("#{someObject.value}") double value) { 
    return new MyBean(value); 
} 
相关问题