Java 手动拉动SpringBean的最佳方法?
如何手动拉动SpringBean?我有一个相当大的web应用程序,在给定的服务中,临时对象需要访问特定于机器的bean(数据库连接信息)。因为应用程序在集群中运行,所以这个临时对象(可以在服务器之间跳转)始终需要从当前spring上下文和服务器获取正确的连接Java 手动拉动SpringBean的最佳方法?,java,spring,tomcat,javabeans,Java,Spring,Tomcat,Javabeans,如何手动拉动SpringBean?我有一个相当大的web应用程序,在给定的服务中,临时对象需要访问特定于机器的bean(数据库连接信息)。因为应用程序在集群中运行,所以这个临时对象(可以在服务器之间跳转)始终需要从当前spring上下文和服务器获取正确的连接 那么,手动从spring中提取bean的最佳方法是什么呢?您可以让服务实现,这样您就可以访问ApplicationContext本身,并可以直接在其上调用getBean()。您可以让服务实现,这样您就可以访问ApplicationConte
那么,手动从spring中提取bean的最佳方法是什么呢?您可以让服务实现,这样您就可以访问ApplicationContext本身,并可以直接在其上调用getBean()。您可以让服务实现,这样您就可以访问ApplicationContext本身,并可以调用getBean()直接在上面
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Object o = ctx.getBean("dataSource");
当然,您可以像这样投射bean:
DataSource d = (DataSource) ctx.getBean("dataSource");
当然,您可以像这样投射bean:
DataSource d = (DataSource) ctx.getBean("dataSource");
我建议“在创建时”将您试图拉入域对象的对象注入。这意味着,无论何时在特定服务器上创建域对象,它都将被注入正确的(特定于机器的)bean。我建议在“创建时”将您试图拉入域对象的对象注入。这意味着,无论何时在特定服务器上创建域对象,它都将被注入正确的(特定于机器的)bean。它需要获取数据库连接信息吗?将连接存储在中如何?假设您的服务器提供它。它需要获取数据库连接信息吗?将连接存储在中如何?假设您的服务器提供了它。我使用的是域模型,但它是一种服务/域的混合,满足了我的特定需求。有没有办法在不影响我的深层、深层服务层的情况下获得ServletContext?我在域模型中,但它是一种服务/域的混合体,适合我的特定需求。有没有办法在不影响我的深层、深层服务层的情况下获取ServletContext?这将是不必要的网络流量。所有信息都在服务器上已知,其中域对象isJNDI与网络无关。。。它基本上是以一个已知的名称存储一个对象,你可以在服务器上查找它。所有信息都在服务器上已知,其中域对象isJNDI与网络无关。。。它基本上是以一个已知的名称存储一个对象,你可以在服务器上查找。下面是一个我所说的示例-虽然这并没有真正的帮助,因为当域对象移动到另一台服务器时,信息会发生变化。是的,它会。。。当bean“移动”到另一台服务器时,它将在那里重新创建。一旦它被创建,它就会被注入另一个bean。阅读关于Spring和AOPAL的文章,尽管这并没有真正的帮助,因为当域对象移动到另一台服务器时,信息会发生变化。。。当bean“移动”到另一台服务器时,它将在那里重新创建。一旦它被创建,它就会被注入另一个bean。了解Spring和AOP