我继承了一个springboot应用程序。这个应用程序有一个类似下面的服务:
@Service
public class MyService {
String param1 = "";
String param2 = "";
public void doStuff() {
// do stuff assuming the parameters param1 and param 2 of this autowired service have already been initialized
}
}
,此服务是从与以下服务类似的另一个服务自动连接的;
@Service
public MainService {
@Autowired MyService myService;
public performWork() {
this.myService.doStuff();
}
}
,最后,springboot应用程序类似于下面的代码:当Kafka主题有一条消息时,就会调用listen()方法(Kafka在这里只是相关的,因为它启动了autowired服务的调用):
@SpringBootApplication
public class MyApplication {
@Autowired
MainService mainService;
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@KafkaListener(topics = "myTopic")
public void listen(String message) {
this.graphicService.performWork();
}
}
我的问题是:在调用其doStuff()方法之前,在MyService服务上初始化参数param 1和param 2的正确方法是什么?
我不会使用bean配置文件,而是将其作为springboot应用程序启动的一部分来执行。任何建议都是非常感谢的。谢谢
1条答案
按热度按时间ilmyapht1#
根据我的理解,您只需要在bean初始化时执行初始化语句。创建bean后,您可以使用
PostConstruct
注解来完成任何需要完成的工作。MyService
类应如下所示PostConstruct
注解用于需要在依赖注入完成后执行以执行任何初始化的方法。您可以在documentation中找到有关注解的更多信息。
顺便说一句,使用构造函数注入总是比使用
Autowired
更好,我强烈推荐使用它。