spring中Utils工具类注入问题
使用工具类的时候,我们想在static修饰的方法中,通过注入来调用其他方法,这里就存在问题。
第一:普通工具类是不在spring的管理下,spring不会依赖注入
第二:即便使用@Autowired完成注入,由于工具类是静态方法,只能访问静态变量和方法。但是spring不能直接注入static的。
如:
@Autowired
private static JcustomerMapper jcustomermapper;
这样直接注入会是null。为什么spring不能直接注入static变量
static成员与类相关,其中static变量及初始化块会在类加载器第一次加载类时初始化和执行。而spring管理的是对象实例的创建和属性注入
(初始化了static变量,也就是给该static变量分配内存了)
解决这两个问题
第一:在根据类上加入@Component,使它在spring的管理下,由spring完成该类的初始化和注入
第二: 1.我们可以构建一个当前根据类对象的静态变量 private static JcustomerUtils jcustomerutils;
2.并且在初始化的时候把当前工具类对象赋值给这个变量
@PostConstruct //该注解的方法在构造函数执行后执行
public void init() {
jcustomerutils = this;
}
3.此时我们注入其它对象
@Autowired
private JcustomerMapper jcustomermapper;
4.通过jcustomerutils.jcustomermapper就可以调用jcustomermapper的变量和方法了
下面是具体的代码
package com.jinsenianhua.user.utils; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import javax.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import com.jinsenianhua.common.utils.IDcardUtils;
import com.jinsenianhua.common.utils.MyPhoneUtils;
import com.jinsenianhua.common.utils.MyresultUtils;
import com.jinsenianhua.user.dao.JcustomerMapper;
import com.jinsenianhua.user.pojo.Jcustomer;
import com.jinsenianhua.user.pojo.JcustomerExample;
import com.jinsenianhua.user.pojo.JcustomerExample.Criteria; @Component //声明组件 - 让spring初始化的时候在spring上下文创建bean并完成注入
public class JcustomerUtils { @Autowired
private JcustomerMapper jcustomermapper; private static JcustomerUtils jcustomerutils; @PostConstruct
public void init() {
jcustomerutils = this;
} public static List<Jcustomer> findJcustomerByPhone(String phone) {
JcustomerExample example = new JcustomerExample();
Criteria createCriteria = example.createCriteria();
createCriteria.andPhoneEqualTo(phone);
List<Jcustomer> selectByExample = jcustomerutils.jcustomermapper.selectByExample(example );
return selectByExample;
} }
如上代码,可以完成注入。
spring中Utils工具类注入问题的更多相关文章
- 简单了解Spring中常用工具类_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...
- spring中常用工具类介绍
http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作 Spring 定义了一个 org.springframework.core.io ...
- java反射的补充:桥接方法以及Spring中一些工具类
在上一篇博文中:http://www.cnblogs.com/guangshan/p/4660564.html 源码中有些地方用到了 this.bridgedMethod = BridgeMethod ...
- Spring boot中普通工具类不能使用@Value注入yml文件中的自定义参数的问题
在写一个工具类的时候,因为要用到yml中的自定义参数,使用@Value发现值不能正常注入,都显示为null: yml文件中的自定义格式 调用工具类的时候不能new的方式 要使用@Autowired的方 ...
- Spark中常用工具类Utils的简明介绍
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...
- Spring 的优秀工具类盘点
文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...
- Spring 的优秀工具类盘点第 2 部分
特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题. ...
- Spring 的优秀工具类盘点---转
第 1 部分: 文件资源操作和 Web 相关工具类 http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/ 文件资源操作 文件资源的 ...
- Java中的工具类究竟如何命名?
先来几个例子 JDK自带工具类 Arrays.asList(); Objects.equals(); Collections.sort(); Spring框架工具类 StringUtils.isEmp ...
- Spring的StringUtils工具类
本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:<Spring的StringUtils工具类> org.springframework.util.StringU ...
随机推荐
- MindSpore Graph Learning
技术背景 MindSpore Graph Learning是一个基于MindSpore的高效易用的图学习框架.得益于MindSpore的图算融合能力,MindSpore Graph Learning能 ...
- Emgu实现图像分割
C#通过Emgu这个图像处理库,可以很方便的将一幅单通道图像分割为R.G.B三个单通道图像. Image<Bgr, Byte> ImageBGR = null; Image<Bgr, ...
- zk,kafka,redis哨兵,mysql容器化
1. zookeeper,kafka容器化 1.1 zookeeper+kafka单机docker模式 docker pull bitnami/zookeeper:3.6.3-debian-11-r4 ...
- 说一下 ArrayList 和 LinkedList 的区别?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在上一篇文章里,我们聊到了基于动态数组 ArrayList 线性表,今天我们来讨论 ...
- c++学习笔记(入门)
1 struct和class的区别 struct成员变量(成员函数)的访问属性缺省的情况下默认为public. class成员变量(成员函数)的访问属性缺省的情况下默认为private. 2 初始化列 ...
- 【翻译】rocksdb调试指引
rocksdb调试指引 翻译自官方wiki:https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide 转载请注明出处:https:// ...
- python 爬取豆瓣电影评论,并进行词云展示
python 爬取豆瓣电影评论,并进行词云展示 本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不 ...
- Java/JDK各版本主要特性汇总
目录 Java18(2022.3) Java17(2021.9)(LTS版本) Java16(2021.3) Java15(2020.9) Java14(2020.3) Java13(2019.9) ...
- Clickhouse表引擎探究-ReplacingMergeTree
作者:耿宏宇 1 表引擎简述 1.1 官方描述 MergeTree 系列的引擎被设计用于插入极大量的数据到一张表当中.数据可以以数据片段的形式一个接着一个的快速写入,数据片段在后台按照一定的规则进行合 ...
- [编程基础] Python列表解析总结
在本教程中,我们将学习使用Python列表解析(list comprehensions)相关知识 1 使用介绍 列表解析是一种基于现有列表创建列表的句法结构.列表解析提供了创建列表的简洁方法.通常需要 ...