Spring3 - @Autowired - PullRequest
       2

Spring3 - @Autowired

0 голосов
/ 10 мая 2011

Это мой 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
  • , когда я использую dataSource в getUsers, он становится нулевым?

Вопросы:

  1. Как можноЯ понял, что это работает?

Я новичок в Spring3, поэтому мне очень нужна ваша помощь.

Ответы [ 4 ]

2 голосов
/ 10 мая 2011

Чтобы использовать автоматическую разводку, вам необходимо добавить следующее в конфигурацию вашего xml-файла:

<context:annotation-config />

Если это не поможет, добавьте

<context:component-scan base-package="org.springframework.jdbc.datasource" />
1 голос
/ 11 мая 2011

Попробуйте добавить AutowiredPostProcessor в конфигурацию

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
 </bean>
0 голосов
/ 02 января 2018

вам нужно импортировать класс, который вы делаете, автоматически подключенный без модификаторов доступа в файле класса репозитория

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;
0 голосов
/ 11 мая 2011

Вы можете попробовать добавить autowire в метод set вместо свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...