簡體   English   中英

具有ApplicationContext.xml,DAO和Service的Spring JPA為NULL

[英]Spring JPA with ApplicationContext.xml, DAO and Service are NULL

我對此有疑問。 所有的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;
}

任何幫助將不勝感激。

更新:我在這里上傳了我的項目(僅僅是開始,非常簡單),所以每個人都可以看看。 希望有人能找出問題所在。 :(

請檢查這些服務/ Dao是否在com.tipytut軟件包中。 context:annotation-config在組件掃描中自動啟用。 您的控制器是否用@Controller注釋或通過@Component制成了組件? 否則,除非您手動進行接線,否則它將不會被檢測到,也不會是Spring bean。 因此,如果不是Spring bean,自動裝配將不起作用

我忘了更新我的問題,終於明白了! 我忘記為struts2-spring-plugin添加依賴struts2-spring-plugin ,問題是我沒有關於此X-(

希望這會幫助某人^^

使用@Resource注釋與此

@Resource 
    private TagDAO tagDAO;

在您的配置文件中

@Controller注釋控制器,並將@Resource注釋添加到服務中,就像DAO一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM