#spring-mvc
#spring-mvc
Вопрос:
Это мой applicationContext.xml
<bean id="JdbcUserDao" class="controller.User.JdbcUserDao">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="org.apache.derby.jdbc.ClientDriver"
p:url="jdbc:derby://localhost:1527/TodoDb"
p:username="root"
p:password="root" />
Это мой класс implDao :
@Repository
public class JdbcUserDao implements IUserDao {
private JdbcTemplate jt;
@Autowired
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
jt = new JdbcTemplate(this.dataSource);
}
public JdbcTemplate getJt() {
return jt;
}
public void setJt(JdbcTemplate jt) {
this.jt = jt;
}
@Override
public List<User> getUsers(final String username, final String password) {
List<User> users = this.jt.query("SELECT username, password FROM USERS",
new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int i) throws SQLException {
User user = new User();
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
return user;
}
});
return users;
}
}
Проблемы:
- this.DataSource доступен, когда он устанавливает источник данных через @Autowired, как конфигурации в xml
- когда я использую источник данных в getUsers, он становится нулевым?
Вопросы:
- Как я могу заставить это работать?
Я новичок в spring3, поэтому мне действительно нужна ваша помощь.
Ответ №1:
Чтобы использовать автоматическое подключение, вам необходимо добавить следующее в конфигурацию вашего XML-файла.
<context:annotation-config />
Если это не поможет, пожалуйста, добавьте
<context:component-scan base-package="org.springframework.jdbc.datasource" />
Ответ №2:
Попробуйте добавить AutowiredPostProcessor в конфигурацию
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
</bean>
Комментарии:
1. ты зажигаешь! Я пытался исправить свою очень похожую проблему в течение последних 4 дней, и я почти искал ответы в 1000 результатах Google. Большое вам спасибо
Ответ №3:
Вы могли бы попробовать добавить autowire в метод set вместо свойства.
Ответ №4:
вам необходимо импортировать класс, который вы выполняете автоматически, без модификаторов доступа в файл класса репозитория
com.<your project>.controller.User.JdbcUserDao
и весенняя аннотация
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository;
@Repository
public class JdbcUserDao implements IUserDao {
@Autowired
DataSource dataSource;