我有一個類Banana,它有一個@PostConstruct我想在創建類物件后運行的方法。我正在使用這些呼叫創建此類的物件
Cat cat = new Cat();
Banana b = new Banana(cat);
因此,從日志中我了解到在創建物件@PostConstruct時不會呼叫此方法Banana。我認為我實施的方式不是正確的用法。有人可以指導我如何正確實作這一點,因為這是我使用 Spring Boot 在 Java 專案上的第一個任務。我需要在Banana創建物件后運行設定代碼,那么除了@PostConstruct
@Slf4j
public class Banana {
public Banana(Cat cat) {
this.cat = cat;
}
private Cat cat;
@PostConstruct
public void setup() {
// some code
}
public void execute() {
// some code
}
}
uj5u.com熱心網友回復:
該@PostConstruct注解用于需要在依賴注入完成后執行任何初始化的方法上。僅當框架控制物件的創建時,框架才會呼叫此方法。
由于您Banana手動實體化- 您還必須手動呼叫它。
uj5u.com熱心網友回復:
彈簧榮幸的所有注釋(@PostConstruct,@PreDestroy,@Autowired和許多其他人)時,由彈簧本身創建的物件都是適用的。在這種情況下,spring 可以分析類,處理注釋等。
當您自己實體化時 ( new Banana()) - spring 甚至不知道您的物件存在,因此無法呼叫其任何方法,因此您被迫自己進行實體化。所以是的,在這種情況下,您將不得不@PostConstruct手動呼叫注釋的方法,這意味著@PostConstruct注釋非常無用,可以完全省略。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326742.html
上一篇:如何知道Java工件的確切用途?
