Spring : 用@Bean 创建bean
Spring : creating beans with @Bean
我对 bean 创建有疑问:
@Bean
Service carService() {
return new Service(new CarRepository(), "car");
}
我的问题是 CarRepository class
依赖于 EntityManager em
变量(@PersistenceContext
)
因此,如果我使用 new
运算符,我将缺少这种依赖性(因为我正在实例化自己的 bean)。
我还有许多服务(CarService、BikeService 等)和许多存储库(CarRepository、BikeRepository 等)。所以直接在类中使用注解似乎很难。
那么有什么解决办法吗?
我认为你需要用 @Repository
注释每个存储库 class
注解。每个服务 class 与 @Service
.
在 Spring 中,您不应将新运营商用于服务。使用注解
@Service
public classSomeClass {
或
@Component
public classSomeClass {
和你的 class 可以通过依赖注入来注入。
如果你想创建一个可以通过 dependencyInjection 使用的新自定义 bean 这就是 @Configuration 注释的用途。
@Configuration
public class ConfigurationClass{
@Bean
public SomeClass createSomeClass(){
return new SomeClass();
}
}
简单。将您的存储库作为依赖项传递到您的 Bean 工厂函数中:
@Bean
Service carService(final CarRepository carRepository) {
return new Service(carRepository, "car");
}
存储库需要作为 bean 本身存在。您可以在配置 class 的另一个 bean 方法中创建存储库 bean,或者通过注释 class 并在组件扫描期间创建它。
我对 bean 创建有疑问:
@Bean
Service carService() {
return new Service(new CarRepository(), "car");
}
我的问题是 CarRepository class
依赖于 EntityManager em
变量(@PersistenceContext
)
因此,如果我使用 new
运算符,我将缺少这种依赖性(因为我正在实例化自己的 bean)。
我还有许多服务(CarService、BikeService 等)和许多存储库(CarRepository、BikeRepository 等)。所以直接在类中使用注解似乎很难。
那么有什么解决办法吗?
我认为你需要用 @Repository
注释每个存储库 class
注解。每个服务 class 与 @Service
.
在 Spring 中,您不应将新运营商用于服务。使用注解
@Service
public classSomeClass {
或
@Component
public classSomeClass {
和你的 class 可以通过依赖注入来注入。 如果你想创建一个可以通过 dependencyInjection 使用的新自定义 bean 这就是 @Configuration 注释的用途。
@Configuration
public class ConfigurationClass{
@Bean
public SomeClass createSomeClass(){
return new SomeClass();
}
}
简单。将您的存储库作为依赖项传递到您的 Bean 工厂函数中:
@Bean
Service carService(final CarRepository carRepository) {
return new Service(carRepository, "car");
}
存储库需要作为 bean 本身存在。您可以在配置 class 的另一个 bean 方法中创建存储库 bean,或者通过注释 class 并在组件扫描期间创建它。