springboot通过有参构造获取bean
时间: 2023-12-10 20:39:59 浏览: 74
在SpringBoot中,我们可以使用有参构造函数注入Bean。这种方式称为构造函数注入。构造函数注入的优点是可以保证Bean被正确地初始化,且在构造函数中的依赖关系明确,更加直观清晰。
首先,需要在Bean的类中定义一个有参构造函数,并在该构造函数中声明需要注入的依赖项。例如:
```
@Service
public class MyService {
private final MyRepository myRepository;
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
// other service methods
}
```
然后,在配置类中使用`@Bean`注解来创建Bean实例,并在构造函数中传入所需的依赖项。例如:
```
@Configuration
public class AppConfig {
@Bean
public MyRepository myRepository() {
return new MyRepository();
}
@Bean
public MyService myService() {
return new MyService(myRepository());
}
}
```
在上面的示例中,`MyService`类中的构造函数接收一个`MyRepository`类型的参数,并将其保存在类成员变量中。在`AppConfig`配置类中,我们使用`myRepository()`方法创建`MyRepository`类型的Bean并在`myService()`方法中通过构造函数注入。
最后,我们可以通过`@Autowired`注解来注入`MyService`类型的Bean实例,SpringBoot会自动使用构造函数注入来满足依赖项。例如:
```
@RestController
public class MyController {
private final MyService myService;
@Autowired
public MyController(MyService myService) {
this.myService = myService;
}
// controller methods
}
```
在上面的示例中,`MyController`类中的构造函数接收一个`MyService`类型的参数,并将其保存在类成员变量中。通过`@Autowired`注解,SpringBoot会自动使用构造函数注入来创建`MyService`类型的Bean实例并将其传递给构造函数。
阅读全文