0

sessionFactory が EventService クラスに注入されていないのはなぜですか? 私がやろうとしているのは、sessionFactory を EventService クラスに注入することですが、何が起こっているかというと、Services クラス内にのみ注入されているということです

マイ アプリケーション コンテキスト xml

<!-- Inject my business services class to the action -->
    <bean id="services" class ="services.Services" scope ="singleton">
        <property name = "sessionFactory" ref = "sessionFactory"/>
    </bean>

    <bean  id ="eventservice" class ="services.EventServices" scope ="singleton">
        <property name = "sessionFactory" ref = "sessionFactory"/>
    </bean>

ここで何が欠けていますか?複数回の注射を申告することはできませんか?

ここに私のEventServicesクラスがあります

package services;

import org.springframework.transaction.annotation.Transactional;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import data.*;
import java.util.List;

// This class is the business services tier in the application.
// @Transactional is needed so that a Hibernate transaction is set up,
//  otherwise updates won't have an affect
@Transactional
public class EventServices {
    // So Spring can inject the session factory
    SessionFactory sessionFactory;
    public void setSessionFactory(SessionFactory value) {
        sessionFactory = value;
    }

    // Shortcut for sessionFactory.getCurrentSession()
    public Session sess() {
        return sessionFactory.getCurrentSession();
    }

    @SuppressWarnings("unchecked")
    public List<Event> getEvents() {
        return sess().createQuery("from Event").list();
    }
}

ここに私のサービスクラスがあります

package services;

import org.springframework.transaction.annotation.Transactional;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import data.*;
import java.util.List;

// This class is the business services tier in the application.
// @Transactional is needed so that a Hibernate transaction is set up,
//  otherwise updates won't have an affect
@Transactional
public class Services {
    // So Spring can inject the session factory
    SessionFactory sessionFactory;
    public void setSessionFactory(SessionFactory value) {
        sessionFactory = value;
    }

    // Shortcut for sessionFactory.getCurrentSession()
    public Session sess() {
        return sessionFactory.getCurrentSession();
    }

    public void createPerson(String name) {
        Person p = new Person();
        p.setName(name);
        sess().save(p);
    }   

}

今のところ平凡なコードのように見えますが、EventServices が最終的に機能するようになったらすぐに修正します

4

0 に答える 0