我正在开发一个现有的webapp,其中大多数bean都是使用xml config定义和发现的。有一堆xml文件已定义并包含在web.xml的contextConfigLocation
参数中,从而创建了Web应用程序上下文。
对于我正在编写的一些新代码,我决定使用java config。
@Configuration
public class UserChannelConfiguration {
@Autowired
@Qualifier("deviceIOSDao")
private DeviceIOSDao deviceIOSDao;
@Bean
public UserPayloadHandler defaultUserPayloadInstallationHandler() {
return new DefaultUserPayloadInstallationHandler(deviceIOSDao);
}
}
由于webapp已经使用了基于xml的配置,我创建了一个简单的xml配置文件(ios-user-channel-service-beans.xml),它将上面的配置定义为bean
<bean name="userChannelConfiguration" class="com.fiberlink.mdm.ios.user_channel.UserChannelConfiguration"/>
我将此文件与开头提到的其他文件一起包含在web.xml中
<context-param>
<description>locations of the Spring configuration files</description>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:com/somethingelse/ios-action-service-beans.xml, <!-- contains xml definition of my bean 'deviceIOSDao' -->
classpath:com/something/ios-user-channel-service-beans.xml <!-- contains my java config bean -->
</param-value>
</context-param>
此外,我的application-servlet.xml包含<context:annotation-config />
,它应该允许一些spring组件处理我的@AutoWired
注释并从Web应用程序上下文中注入deviceIOSDao
。
但deviceIOSDao
没有得到自动装配,当我在代码中在运行时访问它时,我得到一个空指针异常。
我错过了什么?