2016-07-15 6 views
0

私は@Service@EnabledTransactionManagementというアノテーションが付けられたクラスTestServiceImplを持っています。 私はそれに2つのDAOオブジェクトを参照しています@Autowired Service1DAO s1@Autowired Service2DAO s2Service1DAOおよびService2DAOクラスには、@Repository注釈が付いています。 このメソッドには、@Trasanctionと、要件に応じた必須パラメータが付いています。春にはAutowiredがnullです

クエストは: 私はs1オブジェクトを取得することができますが、私はs2オブジェクトを取得しようとしているときにそれは私がnullを表示しています。 これらは互いに定義されています。

serivieクラスがある:

@Service 
@Scope("prototype") 
@EnabledTransactionManagement 
public class TestServiceImpl { 
    @Autowired Service1DAO s1; 
    @Autowired Service2DAO s2; 

    @Transation(readOnly = false, propogation = Propagation.REQUIRED_NEW) 
    public String getXXX1(){ 
     s1.print(); 
    } 

    @Trsanction(readOnly = false, propogation = Propagation.REQUIRED_NEW)`enter code here` 
    public String getXXX2(){ 
     s2.write(); 
    } 
} 

DAOクラスは次のとおり

@Repository 
public class Service1DAO implements Service1{ 
    @PersistentContext 
    EntityManager em; 

    public String Print(){ 
     em.XXXXXX(); 
    } 
} 

@Repository 
public class Service2DAO implements Service2{ 
    @PersistentContext 
    EntityManager em; 

    public String write(){ 
     em.XXXXXX(); 
    } 
} 

XMLが挙げコンポーネントスキャンpakcageを含んでいます。

+0

サービスクラスのメソッドには@Trasanctionというアノテーションが付けられます。 – Atul

+0

コードを追加してください – reos

+0

いつ、どのようにs2オブジェクトにアクセスしようとしていますか?それはコントローラーか、オブジェクトを作成していますか?どのようにしているのか教えていただけますか? –

答えて

0

Ok ...エラーは解決されました。

new()を使用してコントローラで作成されたServiceクラスオブジェクトは、サービスクラスとDAOクラスのものを探していました。それはコードの実装に関連する間違いであっても、Springを使用してもJavaのパスに従ってオブジェクトを作成しています。

関連する問題