在Spring javaconfig中,如何初始化@Bean这取决于@Service
我已经将一个基于Spring 4.0的项目从xml转换为javaconfig。
在初始化时,我的一个bean需要访问Hibernate,通过Spring @Service()从数据库中获取一些配置数据。Bean 初始化如下所示:buildingService
@Bean
@DependsOn({ "transactionManager", "webSocketHandler", "buildingService" })
Smarty smarty() {
Smarty bean = new Smarty();
bean.init(); // I also tried @Bean(initMethod = "init") with no difference
return bean;
}
问题是,在 中,访问了服务,但失败,并显示 .bean.init()
NullPointerException
我添加了,但它没有帮助。buildingService
@DependsOn
可能 -annoted 类是在 !?@Service
@Bean
我可以预先自己初始化带注释的类吗?@Service
编辑 1
感谢到目前为止的所有反馈!
我需要添加一些细节:
buildingService 不是 a ,它是,嗯,a,看起来像这样:@Bean
@Service
@Service("buildingService")
@Transactional
public class BuildingService {
...
public List<Building> getAll() {
final Session session = sessionFactory.getCurrentSession();
final Query query = session.createQuery("from Building order by name");
return query.list();
}
...
}
Smarty 是一个 Spring 托管的 Bean,在一个 -annotated 类中初始化,该类正在执行根上下文的初始化。@Configuration
Smarty直接依赖于buildingService,如下所示:
@Resource(name = "buildingService")
private BuildingService buildingService;
我尝试用 注释,但这并没有改变任何东西。Smarty.init()
@PostConstruct
请注意,首先要做的是调用Smarty.init()
buildingService.getAll();