我试图通过以下方式将类自动装入WebSocketServlet:
@Configurable(autowire=Autowire.BY_TYPE)
public class MyServlet extends WebSocketServlet {
@Autowired
public MyClass field;
// etc...
}
以下是我的配置:
<context:annotation-config />
<context:component-scan base-package="org.*" />
<bean id="config" class="org.*.MyClass">
<!-- a bunch of properties -->
</bean>
请注意,只要我在春季@Controller
,autowire就可以正常工作了。我不得不走出去,因为我不知道如何将WebSocketsServlet映射到@Controller
的方法,就像使用常规servlet一样。
知道我可能缺少什么吗?
答案 0 :(得分:2)
为了使用@Configurable,你需要在巡回上下文中包含这些行:
<context:load-time-weaver aspectj-weaving="true"/>
<context:spring-configured/>
<context:annotation-config />
<context:component-scan base-package="org.*" />
此外,我认为您必须在Manifest的Import-Library部分中引用spring-aspect。
我没有成功使它成功,在Eclipse的Virgo论坛上有一篇文章。 如果你成功了,请告诉我如何;)
答案 1 :(得分:1)
摆脱@Configurable并在servlet init方法中执行以下操作可以解决问题:
@Override
public void init() throws ServletException {
super.init();
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
答案 2 :(得分:-4)
可以使用@Configuration
或@Autowired
注释将Spring环境注入@Inject
类来查找外部化值:
@Configuration
public class AppConfig {
@Inject Environment env;
@Bean
public MyBean myBean() {
MyBean myBean = new MyBean();
myBean.setName(env.getProperty("bean.name"));
return myBean;
}
}