У меня проблемы с аннотацией autowire. Мое приложение выглядит так:
Вот контроллер:
@Controller
public class MyController {
@Autowired
@Qualifier("someService")
private SomeService someService;
....
}
Это сервисный слой:
public interface SomeService {
...
}
@Service
public class SomeServiceImpl implements SomeService{
@Autowired
@Qualifier("myDAO")
private MyDAO myDAO;
....
}
И слой DAO:
public interface MyDAO{
....
}
@Repository
public class JDBCDAOImpl implements MyDAO {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
....
}
Это файл app-service.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" />
Итак ... Когда я запускаю веб-приложение, MyController Autowires корректно (поле someService правильно введено объектом класса SomeServiceImpl), но в myDAO поле someService имеет нулевое значение (неправильно введено).
Не могли бы вы помочь мне найти проблему?
P.S. Интересно, но когда я меняю «идентификатор компонента» с myDAO на какой-то другой (например, myDAO2), система выдает мне ошибку, из-за которой невозможно выполнить инъекцию, поскольку bean myDAO не существует. Итак, Spring сделайте укол, но где он? И почему это не работает правильно?