我遇到了这个问题。所有的DAO和服务都是空的,我不知道如何解决这个问题:(
这是web.xml中的配置部分
...
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
...
和applicationContext.xml
<context:component-scan base-package="com.tipytut" />
<context:annotation-config />
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>/WEB-INF/classes/tipytut.properties</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL" />
<property name="showSql" value="true" />
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
我有这样的DAO:
@Repository("tagDAO")
@Transactional
public class TagDAOImpl extends JpaDAO implements TagDAO {
public List<Tag> getTags() {
return getList("SELECT t FROM Tag t");
}
}
......和服务
@Service("managementService")
@Transactional
public class ManagementServiceImpl implements ManagementService {
@Autowired
private TagDAO tagDAO;
public List<Tag> getTags() {
return tagDAO.getTags();
}
}
当我在Controller中调用该服务时,它始终为NULL
@Autowired
private ManagementService managementService;
public List<Tag> getTags() {
try {
managementService.getTags();
} catch (Exception ex) {
ex.printStackTrace();
}
return tags;
}
任何帮助将不胜感激。
更新: 我上传了我的项目HERE(只是初始部分,非常简单),所以每个人都可以看看。希望有人能弄清楚这有什么问题。 :(
答案 0 :(得分:2)
请检查这些服务/ Dao是否在com.tipytut包中。 context:annotation-config在组件扫描中自动启用。您的控制器是使用@Controller注释还是通过@Component创建了一个组件?否则它将不会被检测到,并且除非您手动连接它,否则它不会是Spring bean。因此,如果不是Spring bean
,自动装配将无法工作答案 1 :(得分:1)
我忘了更新我的问题,终于明白了!我忘了为struts2-spring-plugin
添加依赖项,问题是我没有关于这个X的错误消息 - (
希望这会帮助某人^^
答案 2 :(得分:0)
使用@Resource
注释
@Resource
private TagDAO tagDAO;
配置文件中的
使用@Controller
为您的控制器添加注释,并为您的服务添加@Resource
注释,就像DAO一样。