Java Spring 3将@Required字段设置为NULL
我在正确设置Spring环境方面遇到了一些问题。在我的Java Spring 3将@Required字段设置为NULL,java,spring,Java,Spring,我在正确设置Spring环境方面遇到了一些问题。在我的applicationContext.xml中,我有: ... <context:annotation-config /> <context:component-scan base-package="com.company.server" /> <import resource="databaseConfig.xml" /> <bean id="propertyConfigurer" class=
applicationContext.xml
中,我有:
...
<context:annotation-config />
<context:component-scan base-package="com.company.server" />
<import resource="databaseConfig.xml" />
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
现在我的问题开始了。如果您查看以下类:
@Service
public class ViewContactsServiceImpl extends RemoteServiceServlet implements ViewContactsService {
private ContactDao contactDao;
@Autowired
public void setContactDao(ContactDao contactDao) {
this.contactDao = contactDao;
}
@Override
public ArrayList<Contact> getAllContacts() {
return contactDao.getAllContacts();
}
}
更新2 注意。这是一个GWT应用程序 查看ContactServiceImpl.java:
package com.company.server.service.viewcontacts;
package com.company.client.viewcontacts;
查看ContactsService.java:
package com.company.server.service.viewcontacts;
package com.company.client.viewcontacts;
ContactDaoImpl.java
package com.company.server.contact;
package com.company.server.contact;
ContactDao.java
package com.company.server.contact;
package com.company.server.contact;
我认为ViewContactsServiceImpl是由GWT(基于RemoteServiceServlet的猜测)实例化的,所以它不是spring管理的bean 您需要通过重写和实现init方法手动调用autowire。类似于下面显示的代码(来自此)。正如那篇文章中所解释的,创建一个所有GWT服务都可以扩展的AbstractRemoteServlet
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
WebApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(config.getServletContext());
AutowireCapableBeanFactory beanFactory = ctx
.getAutowireCapableBeanFactory();
beanFactory.autowireBean(this);
}
查看库,了解将spring托管bean公开为GWT远程服务的另一种方法。我认为ViewContactsServiceImpl是由GWT实例化的(基于RemoteServiceServlet的猜测)——因此它不是spring托管bean 您需要通过重写和实现init方法手动调用autowire。类似于下面显示的代码(来自此)。正如那篇文章中所解释的,创建一个所有GWT服务都可以扩展的AbstractRemoteServlet
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
WebApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(config.getServletContext());
AutowireCapableBeanFactory beanFactory = ctx
.getAutowireCapableBeanFactory();
beanFactory.autowireBean(this);
}
查看库,了解将spring托管bean公开为GWT远程服务的另一种方法。ViewContactsServiceImpl类及其接口的包是什么?@danny.lesnik-查看我的更新2。很抱歉,我忘了提到ContactDaoImpl及其接口包了吗?@danny.lesnik-再次检查更新2:)ViewContactsServiceImpl类及其接口的包是什么?@danny.lesnik-检查我的更新2。对不起,我忘了提到ContactDaoImpl及其接口包了吗?@danny.lesnik-再次检查更新2:)LEGEND!非常感谢。很完美,传奇!非常感谢。工作完美。