Spring 4.2.4-一旦安装了Java 8,Autowire就停止在RAD WAS 8.5中工作



该应用程序在WAS8.5中运行了好几年,包括RAD中的本地WAS8.5服务器。在笔记本电脑上安装了Java 8,在JDK 1.7下在RAD中重新编译了代码(仅在安装时(,重新启动了服务器,启动时出现以下错误:

由以下原因引起:org.springframework.beans.factory.BeanCreationException:创建名为"addressController"的bean时出错:注入自动连接的依赖项失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法autowire字段:专用com.components.mds.service.StaticReferenceServicecom.mds.ui.controller.MDSBaseController.staticRefService;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:否类型的限定bean找到了[com.comcomponents.mds.service.StaticReferenceService]对于依赖项:应至少有1个符合autowire条件的bean此依赖项的候选项。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true(}在org.springframework.beans.factory.annotations.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnorationBeanPostProcess.java:334(在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214(在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543(在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482(在org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306(在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230(在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302(在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory:java:197(

应用程序具有带表示的ear(jsps、控制器等(和带服务、DAO等的jar。jar包含在ear的lib文件夹中。在耳朵里(战争(,控制器有以下代码:

@Controller

@会话属性({MDS_PRESCRIBER_ADDRESS_MAP,MDS_PRESCRIBER}(公共类AddressController扩展MDSBaseController{

private String editAddressID;
private AddressModel addressPhoneModel = new AddressModel();
@Autowired
AddressValidations addressValidator;

并具有spring-content.xml,其中包含以下内容:

<context:spring-configured />
<context:component-scan base-package="com.caremark.mds.ui.customtag"></context:component-scan>
<context:load-time-weaver aspectj-weaving="on" />

以上将尝试在jar中自动连接类:

@Component

公共类AddressValidator{

public boolean validatePrescriberAddress(Address address){

}

带有指定bean的spring-component-context.xml:

<!-- Bean defined in JAR -->
<context:component-scan base-package=" com.components.mds.service" />
<context:component-scan base-package=" com.components.mds.business" />
<context:component-scan base-package=" com.components.mds.validation" />
<context:component-scan base-package=" com.components.mds.dao" />
<context:component-scan base-package=" com.components.mds.auth.service" />
<context:component-scan base-package=" com.components.mds.auth.dao" />
<context:component-scan base-package=" com.components.mds.audit.service" />
<context:component-scan base-package=" com.components.mds.audit.dao" />
<context:component-scan base-package=" com.components.mds.audit.vo" />
<!--  DO not declare beans here just use annotations in class file -->
<mvc:annotation-driven />

静态引用类也有注释:

@Service

公共类StaticReferenceServiceImpl实现StaticReferencesService{//SLF4J日志处理程序private static final Logger log=LoggerFactory.getLogger(StaticReferenceServiceImpl.class(;

@Autowired
private StaticReferenceDao staticRefDao;
@Autowired
private MDSEhCacheManager<StaticReference,Map<String,ReferenceDataVO>> cacheManager;

看起来来自war的类在WEB-INF\lib 下看不到war的lib文件夹中的jar中的类

如果唯一的改变是笔记本电脑升级到使用Java 8 ,为什么它会停止工作

错误日志显示它无法注入com.mds.ui.controller.MDSBaseController.staticRefService中定义的private com.components.mds.service.StaticReferenceService。您应该检查StaticReferenceService是否使用任何Spring注释(如component, service(进行了注释

最新更新