【发布时间】:2009-08-11 21:15:06
【问题描述】:
如何手动拉一个spring bean?我有一个相当大的 Web 应用程序,在给定的服务中,瞬态对象需要访问特定于机器的 bean(数据库连接信息)。由于应用程序在集群中运行,所以这个瞬态对象(可以在服务器之间反弹)总是需要从当前的 spring 上下文和服务器中获取正确的连接。
那么,手动将 bean 从弹簧中拉出的最佳方法是什么?
【问题讨论】:
标签: java spring tomcat javabeans
如何手动拉一个spring bean?我有一个相当大的 Web 应用程序,在给定的服务中,瞬态对象需要访问特定于机器的 bean(数据库连接信息)。由于应用程序在集群中运行,所以这个瞬态对象(可以在服务器之间反弹)总是需要从当前的 spring 上下文和服务器中获取正确的连接。
那么,手动将 bean 从弹簧中拉出的最佳方法是什么?
【问题讨论】:
标签: java spring tomcat javabeans
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Object o = ctx.getBean("dataSource");
当然你可以像这样转换 bean:
DataSource d = (DataSource) ctx.getBean("dataSource");
【讨论】:
您可以让您的服务实现 ApplicationContextAware,这样您就可以访问 ApplicationContext 本身并可以直接在其上调用 getBean()。
【讨论】:
我建议将您尝试在“创建时”拉入域对象的对象注入。这意味着每当您的域对象在特定服务器上创建时,它将被注入正确的(特定于机器的)bean。
【讨论】:
需要获取数据库连接信息吗?将连接存储在JNDI and look it up in the bean 中怎么样?假设您的服务器提供它。
【讨论】: