2016-07-15 140 views
0

我有一個班級TestServiceImpl,其中有@Service@EnabledTransactionManagement註釋。 我指的是其中的2個DAO對象@Autowired Service1DAO s1@Autowired Service2DAO s2Service1DAOService2DAO類標註爲@Repository註釋。 這些方法用@Trasanction標註,並根據需要標註所需參數。春季自動佈線爲空

問題是: 我能夠獲得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

好的...錯誤已解決。

在控制器中使用new()創建的Service類對象和我正在​​尋找那些在服務和dao類。這與代碼實現有關,即使使用Spring仍然遵循java的路徑創建對象。