Ich habe einige Probleme mit Autowire Annotation. Meine app sieht wie folgt aus:Spring @Autowired funktioniert nicht
Hier Controller:
@Controller
public class MyController {
@Autowired
@Qualifier("someService")
private SomeService someService;
....
}
Es ist eine Service-Schicht:
public interface SomeService {
...
}
@Service
public class SomeServiceImpl implements SomeService{
@Autowired
@Qualifier("myDAO")
private MyDAO myDAO;
....
}
Und DAO Schicht:
public interface MyDAO{
....
}
@Repository
public class JDBCDAOImpl implements MyDAO {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
....
}
Dies ist ein app-Service .xml-Datei:
....
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}"/>
<bean id="SomeService" class="com.service.SomeServiceImpl" />
<bean id="myDAO" class="com.db.JDBCDAOImpl" />
Also ... Wenn ich eine Web-App starte, MyController Autowires korrekt (das someService-Feld korrekt von SomeServiceImpl-Klasse-Objekt injiziert), aber myDAO feild von someService hat Null-Wert (nicht richtig injiziert).
Können Sie mir helfen, ein Problem zu finden?
P.S. Es ist interessant, aber wenn ich eine "Bean-ID" von myDAO zu einer anderen (z. B. myDAO2) ändere, gibt mir das System einen Fehler, dass das Injizieren nicht möglich war, weil Bean myDAO nicht existiert. Also, Spring machen eine Injektion, aber wo ist es? Und warum funktioniert es nicht richtig?
Warum verwenden Sie nicht @Service-Annotation im Service und @Repository im DAO, wie Sie es mit @Controller im Controller tun? – Javi
ja ... ich benutze es. Bearbeitet ... Ich vergesse, sie zu schreiben, weil meine App komplexer ist, als der Code oben. Aber Fehler an diesem Ort. – Ilnur
Wenn Sie die Annotation @Repository und @ Service hinzufügen, müssen Sie sie nicht in der XML-Datei als Bean definieren. Sie werden mit –
Javi