Java 将bean和值(在context.xml中定义)注入servlet
我试图将一个Spring管理的bean和一个字符串值注入servlet。servlet在Java 将bean和值(在context.xml中定义)注入servlet,java,spring,servlets,Java,Spring,Servlets,我试图将一个Spring管理的bean和一个字符串值注入servlet。servlet在context.xml中定义如下: <bean name="gwtlogging" class="com.somepackage.MyRemoteLogger"> <property name="symbolMapsDirectory" value="/WEB-INF/deploy/gwt/symbolMaps/"/> <property name="serial
context.xml
中定义如下:
<bean name="gwtlogging" class="com.somepackage.MyRemoteLogger">
<property name="symbolMapsDirectory" value="/WEB-INF/deploy/gwt/symbolMaps/"/>
<property name="serializationPolicyResolver" ref="serializationPolicyResolver"/>
</bean>
这是可行的,但也有一些缺点:
- 我想按照
中的定义注入bean,而不是按照自动连线context.xml
- 我需要注入一个字符串值(不是bean),这种方式似乎不可能
理想情况下,我希望xml中定义的所有值都以某种方式注入servlet实例。如果您可以使用它,您可以在xml配置文件中声明
servlet
bean,使用Spring(或编写自己的)将xml文件加载到WebApplicationContext
,检索servlet
bean,并使用将其添加到ServletContext
Servlet
实例将在Spring中完全准备好,并将由Servlet容器使用 请澄清我想按照context.xml中的定义而不是按照自动连线来注入bean。自动连线是根据名称、类型等来注入实例的。我想按照xml中的说明来注入实例。MyRemoteLogger是否为aServlet
?正确,很抱歉我没有提到它。主要问题是第二个,注入静态值。我可以离开autowiring,但我需要注入这个字符串。如果我的servlet中已经有可用的ApplicationContext
,我不明白为什么要再次加载xml?我可以将servlet实例添加到spring上下文中吗?它会注入值吗?@damluar在本例中,没有第二个ApplicationContext
。这是您唯一加载的。它是web.xml中加载的另一种方法。有关示例,请参见javadoc。
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
config.getServletContext());
}