通过更改上下文文件中的变量来刷新ApplicationContext或单个bean

时间:2016-04-17 16:38:43

标签: java spring groovy spring-boot

我们有一个豆

class MonetDrop(){

    def chance

    def doDrop(){
     println("Your chance to win ${chance} %")
    }
}

在context.groovy初始化bean并设置属性'chance'的值:

beans{
     monetDrop(MonetDrop){
        chance = 50
    }
}

当我在上下文中更改“机会”变量时,我需要刷新bean。 我也可以使用xml或java config,并将此bean移动到单独的配置文件中。 当工作应用程序中的config(!)发生变化时,如何设置刷新bean? 适用于Java 1.8 / Groovy 2.4.4 + Springboot

1 个答案:

答案 0 :(得分:0)

如何获取bean并手动更新?你可以@Autowired BeanFactory并尝试更新指定的bean或只更新@Autowired确切的bean。

例如:

@Component
public class MonetDropUpdater {
    @Autowired
    private MonetDrop drop;

    public void update () {
        // update drop.chance
    }
}

如果chance已更新,请记得更新MonetDrop#chance

refresh此bean的另一种方法是通过注释@Refresh

最后,如果MonetDrop@ConfigurationProperties bean,您只需添加spring-boot-actuator即可使用spring-cloud-config-client刷新它。