在春季替代静态JdbcTemplate

什里帕德·阿什特卡(Shripad Ashtekar)

我在春季实现了Abstract DAO Factory。

我有两种自动接线方法,如下所示:

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。

但是,如果我将它们声明为静态,则保留先前的正确值。

我想知道如果我想保留上述两个的以前的值,那么在春季是否有替代静态的方法?

用户名

您应该在类顶部使用@Component来获取dataSource和jdbcTemplate的对象值。您不应使用类的new关键字来获取自动装配的引用。

下面的代码可能会帮助您解决问题。

import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

@Configuration
@ComponentScan("com.ledara.demo")
public class ApplicationConfig {

    @Bean
    public DataSource getDataSource() {
        DriverManagerDataSource dmds = new DriverManagerDataSource();
        dmds.setDriverClassName("com.mysql.jdbc.Driver");
        dmds.setUrl("yourdburl");
        dmds.setUsername("yourdbusername");
        dmds.setPassword("yourpassword");
        return dmds;
    }

    @Bean
    public JdbcTemplate getJdbcTemplate() {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(getDataSource());
        return jdbcTemplate;
    }

}

及以下类具有jdbcTemplate和dataSource的自动装配字段

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@Component
public class SampleInfo{

    @Autowired(required=true)
    DataSource getDataSource;

    @Autowired(required=true)
    JdbcTemplate getJdbcTemplate;

    public void callInfo() {
        System.out.println(getDataSource);
        System.out.println(getJdbcTemplate);

    }

} 

下面是主班

public class MainInfo {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
        context.register(ApplicationConfig.class);
        context.refresh();
        SampleInfo si=context.getBean(SampleInfo.class);
        si.callInfo();
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在春季替代静态JdbcTemplate

来自分类Dev

春季获得静态资源

来自分类Dev

在春季使用jdbcTemplate进行批量更新

来自分类Dev

在春季使用jdbcTemplate进行批量更新

来自分类Dev

静态委托和替代

来自分类Dev

静态成员的替代

来自分类Dev

替代静态变量

来自分类Dev

静态成员的替代方案

来自分类Dev

Spring JDBCTemplate批量更新快速替代

来自分类Dev

@Autowire静态字段的替代方法

来自分类Dev

静态事件的更好替代方法

来自分类Dev

如果B出错,请回滚A。春季靴子,jdbctemplate

来自分类Dev

春季数据VS春数据JPA VS的JdbcTemplate

来自分类Dev

在春季jdbctemplate中传递不带单引号的字符串

来自分类Dev

春季:参考资源/静态文件夹

来自分类Dev

春季:自动装配静态自参考无效

来自分类Dev

春季:参考资源/静态文件夹

来自分类Dev

Java中静态通用接口的替代方法

来自分类Dev

Java中静态抽象方法的替代方法

来自分类Dev

静态租用/ IP保留的替代方法

来自分类Dev

春季4-addResourceHandlers无法解析静态资源

来自分类Dev

从文件系统提供静态资源| 春季启动网

来自分类Dev

Nginx在春季启动战中提供静态服务

来自分类Dev

从$ {}的catalina.home春季启动战争的静态资源

来自分类Dev

春季启动可能会显示sql甚至直接使用JdbcTemplate

来自分类Dev

模拟某些jar中存在的静态方法的替代方法

来自分类Dev

C#中静态接口方法的替代方法

来自分类Dev

静态函数不好-但是有什么替代方法?

来自分类Dev

MSTest中是否有非静态的ClassInitialize替代方法?