我如何手动拉一个弹簧豆?我有一个相当大的 Web 应用程序,在给定的服务中,瞬态对象需要访问特定于机器的 bean(数据库连接信息)。由于应用程序在集群中运行,所以这个瞬态对象(可以在服务器之间反弹)总是需要从当前的 spring 上下文和服务器中获取正确的连接。
那么,手动将豆子从弹簧中拉出的最佳方法是什么?
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Object o = ctx.getBean("dataSource");
当然,您可以像这样投射 bean:
DataSource d = (DataSource) ctx.getBean("dataSource");
我建议将您尝试在“创建时”拉入域对象的对象注入。这意味着每当您的域对象在特定服务器上创建时,它将被注入正确的(特定于机器的)bean。
您可以让您的服务实现ApplicationContextAware以便您可以访问 ApplicationContext 本身并可以直接在其上调用 getBean() 。
它需要获取数据库连接信息吗?将连接存储在JNDI 中并在 bean 中查找如何?假设您的服务器提供它。