2016-09-28 89 views
1

更新bean属性我有拥有一些结构的豆:在运行时

public class CustomerService{ 
    private Config config; 

    @Required 
    public void setConfig(Config config){ 
    this.config = config; 
    } 
} 

public Config { 
    private String login; 
    private String password; 

    //setters/getters 
} 

APP-context.xml中:

<bean id="config" class="Config"/> 
<bean id="customerService" class="CustomerService"> 
    <property name="config" ref="config"/> 
</bean> 

和在运行时所获得的配置值(通过调用API) 。 如何在运行时更新这些值?

customerService.getConfig().setLogin("login"); 

回答

2

第一注入你的Spring上下文中所需要的位置

@Autowired 
ApplicationContext context; 

获得Spring上下文

CustomerService service = context.getBean(CustomerService.class); 

不要在运行时需要对service变化customerService实例:我可以用它二传手做

service.getConfig().setLogin("login"); 

更新:您还可以从上下文只是你Config实例

context.getBean(Config.class).setLogin("login"); 
+0

什么是配置的bean范围obtaine?原型? – romanvintonyak

+0

@romanvintonyak默认情况下所有的Spring bean都是单例。 –

+0

我的意思是什么应该是一个合适的bean范围? – romanvintonyak