• 【Java】Spring注入静态Bean的几种写法


    单例模式在Spring注解上的一种拓展用法

    写法一,先配置自身Bean,作为静态成员,然后目标Bean作为自身Bean的实例成员‘

    Spring初始化自身Bean时自动装配数据源Bean,从而附属到静态成员上

    使用@PostConstruct实现

    package cn.ymcd.aisw.jobService;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    import javax.sql.DataSource;
    import java.sql.*;
    
    /**
     * @Description Job统一sql工具类
     * @Author jianglun
     * @Date 2022/5/26 0026 10:50
     * @Version 1.0
     */
    @Component
    public class JDBCUtils {
        @Autowired
        private DataSource dataSource;
    
        public static JDBCUtils jdbcUtils;
    
        @PostConstruct
        private void init(){
            jdbcUtils = this;
            jdbcUtils.dataSource = this.dataSource;
        }
    
        // 定期过期商家
        public static void invalidMerchant(){
            Connection connection = null;
            PreparedStatement statement = null;
            try {
                connection = jdbcUtils.dataSource.getConnection();
                statement = connection.prepareStatement("update aisw_merchant set STATUS = 0, MERCHANT_STATUS = 2 where MERCHANT_VALID_DATE < ?");
                statement.setDate(1, new Date(System.currentTimeMillis()));
                statement.executeUpdate();
    
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                // 关闭连接
                try {
                    if(statement != null){
                        statement.close();
                    }
                    if(connection != null){
                        connection.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

      

    我觉得这样要多浪费一个自身Bean放在里面

    当然原理是一样,只是通过实例方法或者构造器方法进行实现

    方法二,直接在构造器入参装配完成资源分配

    package cn.ymcd.aisw.common;
    
    import cn.ymcd.wss.util.log.YmcdLogger;
    import lombok.SneakyThrows;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    
    /**
     * @Description Job统一sql工具类
     * @Author jianglun
     * @Date 2022/5/26 0026 10:50
     * @Version 1.0
     */
    @Component
    public class JdbcUtil {
        private static final YmcdLogger LOGGER = new YmcdLogger(JdbcUtil.class);
    
        private static DataSource dataSource;
    
        @Autowired
        private JdbcUtil(DataSource dataSource) {
            JdbcUtil.dataSource = dataSource;
        }
    
        @SneakyThrows
        public static Connection getConnection() {
            LOGGER.info("Static Variable Test ... {}", JdbcUtil.dataSource.toString());
            return JdbcUtil.dataSource.getConnection();
        }
        
    }
    

    也可以在Set方法上面编写

    package cn.ymcd.aisw.common;
    
    import cn.ymcd.wss.util.log.YmcdLogger;
    import lombok.SneakyThrows;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    
    /**
     * @Description Job统一sql工具类
     * @Author jianglun
     * @Date 2022/5/26 0026 10:50
     * @Version 1.0
     */
    @Component
    public class JdbcUtil {
        private static final YmcdLogger LOGGER = new YmcdLogger(JdbcUtil.class);
    
        private static DataSource dataSource;
    
        @Autowired
        private void setDataSource(DataSource dataSource) {
            JdbcUtil.dataSource = dataSource;
        }
    
    
        @SneakyThrows
        public static Connection getConnection() {
            LOGGER.info("Static Variable Test ... {}", JdbcUtil.dataSource.toString());
            return JdbcUtil.dataSource.getConnection();
        }
    
    }
    

      

  • 相关阅读:
    Iscroll滑动无效
    原生js 无缝滚动组件
    原生 js dialog弹窗组件
    html5 历史管理
    html5拖拽属性
    highcharts 数据图设置X轴间隔显示效果
    highcharts柱状图含有正负柱设置不同颜色的方法
    移动端滑动插件 swiper
    千分位添加和去掉方法
    dubbo常用类和路径
  • 原文地址:https://www.cnblogs.com/mindzone/p/16362368.html
Copyright © 2020-2023  润新知