Tengo algunos problemas con la anotación de autowire. Mi aplicación es el siguiente:Spring @Autowired no funciona
Aquí es controlador:
@Controller
public class MyController {
@Autowired
@Qualifier("someService")
private SomeService someService;
....
}
Es una capa de servicio:
public interface SomeService {
...
}
@Service
public class SomeServiceImpl implements SomeService{
@Autowired
@Qualifier("myDAO")
private MyDAO myDAO;
....
}
y la capa DAO:
public interface MyDAO{
....
}
@Repository
public class JDBCDAOImpl implements MyDAO {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
....
}
Este es un servicio de aplicaciones archivo .xml:
....
<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" />
Así que ... Cuando estoy iniciando una aplicación web, MyController realiza el autoenvío correctamente (el campo someService correctamente inyectado por el objeto de clase SomeServiceImpl), pero myDao feild of someService tiene valor nulo (no se ha insertado correctamente).
¿Podrían ayudarme a encontrar un problema?
P.S. Es interesante, pero cuando cambio una "id. De frijol" de myDAO a otra (por ejemplo myDAO2), el sistema me da un error, que no se pudo realizar la inyección, porque bean myDAO no existe. Entonces, Spring hace una inyección, pero ¿dónde está? ¿Y por qué no funciona correctamente?
¿Por qué no utiliza @Service annotation en el servicio y @Repository en el DAO como lo hace con @Controller en el controlador? – Javi
sí ... lo uso. Editado ... Me olvido de escribirlos, porque mi aplicación es más compleja que el código anterior. Pero errores en ese lugar. – Ilnur
si agrega la anotación @Repository y @ Service, no tiene que definirlos en el xml como un bean. Se encontrarán con –
Javi