gpt4 book ai didi

java - Spring @Component中使用@PostContruct初始化数据

转载 作者:行者123 更新时间:2023-12-01 17:49:54 25 4
gpt4 key购买 nike

我正在使用 @PostContruct 注释来使用 spring 初始化 @Component 中的一些数据。

问题是该属性仅初始化一次。 @Component里面的代码是这样的。

private int x;

@Inject Repository myRepo;

@PostConstruct
private void init () {
this.x = myRepo.findAll().size();
}

变量“x”将在构建时初始化,如果我的数据库中的数据发生更改,“x”将不会更新。有没有一种方法可以在不属于 spring 的类中注入(inject)服务?没有 @例如,组件。

MyClass newclass = new MyClass();

因此,当我初始化类时,findAll() 将始终被调用。

最佳答案

如果你这样做

@Component
@Scope('prototype') // thats the trick here
public class MyClass(){

@Autowired Repository myRepo;

@PostConstruct
private void init () {
this.x = myRepo.findAll().size();
}
}

每当 CDI 上下文请求或直接从工厂请求时,都会创建作用域为 prototype 的 bean 实例。

或者你也可以这样做

@Component()
public class MyClass(){

public MyClass(@Autowired Repository myRepo){
this.x = myRepo.findAll().size();
}
}

在这两种情况下,您都必须使用 Spring 的 CDI 来获取 MyClass 的新实例。

关于java - Spring @Component中使用@PostContruct初始化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51480512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com