使用 new 关键字创建对象时如何调用 PostConstruct 方法
How to call PostConstruct method when creating an object with new keyword
我有一个 class Banana
,它有一个 @PostConstruct
方法,我想在创建 class 对象后 运行。我正在使用这些调用
创建此 class 的对象
Cat cat = new Cat();
Banana b = new Banana(cat);
因此,从日志中我了解到,在创建 Banana
对象时未调用此 @PostConstruct
方法。我认为我实施的方式不是正确的用法。有人可以指导我如何正确实现它,因为这是我在 Java 项目上使用 Spring Boot 的第一个任务。在创建 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
}
}
@PostConstruct
注解用于依赖注入完成后需要执行的方法,以执行任何初始化。
仅当框架控制对象的创建时,此方法才会由框架调用。
由于您手动实例化 Banana
- 您还必须手动调用它。
spring(@PostConstruct
、@PreDestroy
、@Autowired
和许多其他)支持的所有注释在对象由 spring 创建时适用本身。
在这种情况下 spring 可以分析 class,处理注释等
当你自己实例化时 (new Banana()
) - spring 甚至不知道你的对象存在因此不能调用它的任何方法,所以你被迫这样做由你自己。
所以是的,在这种情况下,您将不得不手动调用用 @PostConstruct
注释的方法,这意味着 @PostConstruct
注释非常无用,可以完全省略。
我有一个 class Banana
,它有一个 @PostConstruct
方法,我想在创建 class 对象后 运行。我正在使用这些调用
Cat cat = new Cat();
Banana b = new Banana(cat);
因此,从日志中我了解到,在创建 Banana
对象时未调用此 @PostConstruct
方法。我认为我实施的方式不是正确的用法。有人可以指导我如何正确实现它,因为这是我在 Java 项目上使用 Spring Boot 的第一个任务。在创建 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
}
}
@PostConstruct
注解用于依赖注入完成后需要执行的方法,以执行任何初始化。
仅当框架控制对象的创建时,此方法才会由框架调用。
由于您手动实例化 Banana
- 您还必须手动调用它。
spring(@PostConstruct
、@PreDestroy
、@Autowired
和许多其他)支持的所有注释在对象由 spring 创建时适用本身。
在这种情况下 spring 可以分析 class,处理注释等
当你自己实例化时 (new Banana()
) - spring 甚至不知道你的对象存在因此不能调用它的任何方法,所以你被迫这样做由你自己。
所以是的,在这种情况下,您将不得不手动调用用 @PostConstruct
注释的方法,这意味着 @PostConstruct
注释非常无用,可以完全省略。