【发布时间】:2017-09-28 05:50:57
【问题描述】:
我已经在 Spring 中实现了抽象 DAO 工厂。
我有两种自动装配方法如下:
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
@Autowired
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Autowired
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
一开始 jdbcTemplate 和 dataSource 在其中获得正确的值。但是当我使用 new 关键字调用类的构造函数时,其中写入了上述方法,jdbcTemplate 和 dataSource 被设置为 NULL。
但如果我将它们声明为静态,则保留之前的正确值。
如果我想保留上述两个的先前值,我想知道在 spring 中是否有任何替代 static 的方法?
【问题讨论】:
-
您不应该使用 new 来获取 Spring 组件。这就是错误。您应该使用依赖注入,这就是 Spring 的全部意义所在。
-
如果你将 jdbcTemplate 和 dataSource 字段设为@Autowired,那么 spring 会管理这些对象的生命周期。你不应该创建封闭类的实例。
标签: java spring spring-mvc autowired jdbctemplate