Ich habe eine Klasse TestServiceImpl
, die mit @Service
und @EnabledTransactionManagement
Annotation markiert ist. Ich verweise 2 DAO-Objekte darin @Autowired Service1DAO s1
und @Autowired Service2DAO s2
. Die Klassen Service1DAO
und Service2DAO
sind mit @Repository
Annotation versehen. Die Methoden werden mit @Trasanction
und erforderlichen Parametern je nach Anforderung gekennzeichnet.Autowired ist Null im Frühjahr
Die questio ist: Ich bin in der Lage s1
Objekt zu bekommen, aber wenn ich das s2
Objekt zu bekommen versuchen, es zeigt mir null. Sie sind nacheinander definiert.
Die serivie Klasse:
@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-Klassen sind:
@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();
}
}
Die xml enthält die Komponente Scan pakcage erwähnt.
Die Methoden in der Serviceklasse sind mit @Trasanction gekennzeichnet. – Atul
Fügen Sie bitte den Code – reos
hinzu Wann und wie versuchen Sie, auf das Objekt s2 zuzugreifen? Ist es von einem Controller oder erstellen Sie ein Objekt? Kannst du uns wissen lassen, wie geht es dir? –