解决Spring对静态变量无法注入问题

本文介绍了Spring不支持静态成员变量注入的问题,并提供了三种解决方法:1) 使用set方法结合@Autowired注解;2) 通过XML配置文件进行注入;3) 利用@PostConstruct初始化方法。在使用这些方法时需要注意静态修饰符的处理。
摘要由CSDN通过智能技术生成

问题

今天在学习的过程中想写一个连接和线程绑定的JDBCUtils工具类,但测试时发现一直报空指针异常,上网查了之后Spring并不支持对静态成员变量注入,所以光试用@Autowired肯定是不行的。可是我们编写工具类时肯定是要使用静态变量和方法的,我总结一下我用过可以实现对静态成员变量注入的方法。

@Component
public class JDBCUtils {
   
    @Autowired
    private static ComboPooledDataSource dataSource;

    private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
    public static Connection getThreadConnection(){
   
        Connection conn = tl.get();
        if (conn == null){
   
            conn = getConnection();
            tl.set(conn);
        }
        return conn;

    }
    public static DataSource getDataSource(){
   
        return dataSource;
    }
    public static Connection getConnection(){
   
        Connection connection = null;
        try {
   
            connection = dataSource.getConnection();
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
        return connection;

    }
    public static void removeThreadConnection(){
   
        tl.remove();
    }
}

set方法注入

注解方式

在类前加@Compo

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值