【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();
} }
【Java】Spring注入静态Bean的几种写法的更多相关文章
- spring注入静态变量有几种方法?不看的都掉坑里了!
springboot中经常会用到properties文件中的配置,一般使用@Value注入,但是针对Utils工具类,需要注入一个静态变量有几种方法?为什么有的同学注入的值为null? 代码示例 如果 ...
- JSP中使用Spring注入的Bean时需要注意的地方
遇到问题 遇到一个问题:在JSP中,使用Spring注入的Bean对象时,未能正确地获取到想要的对象. 郁闷的是,它也没报错. 研究问题 使用DEBUG功能(好久不在JSP里写Java代码了,都忘了J ...
- 普通Java类获取spring 容器的bean的5种方法
方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSu ...
- Spring容器装配Bean的三种方式
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件二--获取注入的bean的二种方式
前言: spring容器以xml的形式注入bean,然后可以在类中获取,获取的形式主要有二种:第一种最简单--采用@Resource 或@Autowired关键字在加载spring文件时将bean注入 ...
- Spring注入静态变量的方法,以及CXF如何获取客户端IP
1.如果使用@Resource注解来注入静态变量的,服务器启动就会报错的.可以新增一个set方法,同时在set方法上用@Resource注解来注入. 2.或者直接在Spring的配置文件中使用< ...
- SSH框架系列:Spring读取配置文件以及获取Spring注入的Bean
分类: [java]2013-12-09 16:29 1020人阅读 评论(0) 收藏 举报 1.简介 在SSH框架下,假设我们将配置文件放在项目的src/datasource.properties路 ...
- Java基础系列-单例的7种写法
原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755322.html 一.概述 Java中单例有7种写法,这个是在面试中经常被问到的内容,而且有时候 ...
- Java Spring学习笔记----Bean的依赖注入(设值注入方式)1
Spring常用的两种依赖注入方式:一种是设值注入方式,利用Bean的setter方法设置Bean的属性值:另一种是构造注入,通过给Bean的构造方法传递参数来实现Bean的属性赋值: 1.设值注入方 ...
随机推荐
- js 留言板(带删除功能)
本文所用的知识点:创建节点和添加节点 创建节点:document.createElement('li') 添加节点 node(父亲节点).appendChild(child) child:子节 ...
- Qt初始化代码基本说明
参考视频:黑马程序员https://www.bilibili.com/video/BV1XW411x7NU?p=4 1 工程基本介绍 按照这个基本步骤(https://www.cnblogs.com ...
- Windows10 LTSC版,比Win7还干净
在Windows操作系统的发展历程中,每一个版本都承载着微软对用户需求的深度理解和技术创新.其中,Windows 7以其稳定.高效和简洁的特点,赢得了众多用户的喜爱. 然而,随着技术的不断进步和用户需 ...
- vue导航固定 吸顶效果
吸顶效果 如何得到滚动条滚动的距离,document.documentElement.scrollTop 通过onscroll事件来完成滚动事件监听,达到吸顶值后,进行样式更换
- CF1836
A.Destroyer 开个桶记录个数,看满不满足单调不上升即可. B.Astrophysicists 辛辛苦苦写了这么久的文章就没了????烦死了. 自己做 Virtual Contest 的时候这 ...
- kettle从入门到精通 第五十二课 ETL之kettle Avro output
1.上一节课我们学习了avro input,本节课我们一起学习下avro out步骤. 本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日 ...
- 泛型模板化设计DEMO
泛型模板化设计DEMO 1. 定义Result泛型类 package com.example.core.mydemo.java.fanxing; public class Result<T> ...
- mongodb插入文档,更新文档和检索文档
import com.mongodb.client.*; import com.mongodb.client.MongoClient; import com.mongodb.client.model. ...
- Docker镜像下载慢/失败?Linux代理使用不便?想在无Docker环境下载镜像?试试我这款开源项目吧
我要在这里放一段代码块 // 这是一段防爬代码块,我不介意被文章被爬取,但请注明出处 console.log("作者官网:https://www.hanzhe.site"); co ...
- C# DateTime日期字段转中文文字
public static String ToChineseYearAndMonth(this DateTime dt) { string[] chineseNumbers = { "零&q ...