@Service public class MyService { public void doSomething() { // ... } } @Configuration public class MyConfig { @Bean public MyBean myBean() { return new MyBean(); } } @Component @Lazy @DependsOn("myService") public class MyBean { @Autowired private MyService myService; @PostConstruct public void init() { myService.doSomething(); } 我想在MyConfig里dosomething
时间: 2023-11-22 11:53:10 浏览: 81
你可以将 `MyService` 声明为一个 bean 并注入到 `MyConfig` 中,然后在 `MyBean` 中使用该 bean 执行 `doSomething()` 方法。具体实现如下:
```
@Service
public class MyService {
public void doSomething() {
// ...
}
}
@Configuration
public class MyConfig {
@Bean
public MyBean myBean(MyService myService) {
return new MyBean(myService);
}
@Bean
public MyService myService() {
return new MyService();
}
}
@Component
@Lazy
public class MyBean {
private final MyService myService;
public MyBean(MyService myService) {
this.myService = myService;
}
@PostConstruct
public void init() {
myService.doSomething();
}
}
```
在 `MyConfig` 中定义了 `myService()` 方法,它返回一个新的 `MyService` 实例,并将其声明为一个 bean。然后在 `myBean()` 方法中注入 `MyService` 实例,并将其传递给 `MyBean` 构造函数,然后在 `MyBean` 中使用该实例执行 `doSomething()` 方法。注意,`MyBean` 类上使用了 `@DependsOn("myService")` 注解,以确保 `MyService` bean 在 `MyBean` bean 之前被初始化。
阅读全文