Spring3 - @Autowired

发布于 2024-11-05 22:27:22 字数 1846 浏览 1 评论 0原文

这是我的 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 设置 dataSource 时可用,就像 xml 中的配置一样
  • ,当我在 getUsers 中使用 dataSource 时,它​​会变成 null 吗?

问题:

  1. 我怎样才能得到这个作品?

我是 spring3 的新手,所以我真的需要你的帮助。

This is my 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" />

This is my implDao class :

@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;
    }
}

Problems:

  • this.dataSource available when it sets the dataSource through @Autowired like the configs in xml
  • when I use dataSource in getUsers, it become null ?

Questions:

  1. How can I get this works ?

I'm new to spring3 so I really need your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

为了使用自动装配,您需要将以下内容添加到 xml 文件配置中。

<context:annotation-config />

如果没有帮助请添加

<context:component-scan base-package="org.springframework.jdbc.datasource" />

In order to use autowiring, you need to add the following to your xml file configuration.

<context:annotation-config />

If it doesn't help then please add

<context:component-scan base-package="org.springframework.jdbc.datasource" />
对你而言 2024-11-12 22:27:23

尝试将 AutowiredPostProcessor 添加到配置中

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
 </bean>

Try adding the AutowiredPostProcessor to the config

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
 </bean>
饮湿 2024-11-12 22:27:23

您可以尝试将自动装配添加到 set 方法而不是属性中。

You could try adding the autowire to the set method instead of the property.

菊凝晚露 2024-11-12 22:27:23

您需要导入正在执行自动装配的类,而无需在存储库类文件

com.<your project>.controller.User.JdbcUserDao

和 spring 注释中使用访问修饰符

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository;
@Repository
 public class JdbcUserDao implements IUserDao {

  @Autowired
  DataSource dataSource;

you need to import the class which you are doing autowired without access modifiers in repository class file

com.<your project>.controller.User.JdbcUserDao

and spring annotation

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository;
@Repository
 public class JdbcUserDao implements IUserDao {

  @Autowired
  DataSource dataSource;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文