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 ...
随机推荐
- 微信公众号调试经常报access_token is invalid or not latest rid
是因为我没有使用中控服务器,所以服务器上使用同一个appid和secret获取了access_token 调试的时候再重新获取了一个新的access_token,所以导致微信服务器发放了新的acces ...
- i春秋broken
点开一个附带超链接的网页,直接点击file跳转到broken网页 网页里面是一个jsfuck代码 Jsfuck代码的执行方法 ①复制 ②打开firefox浏览器 ③按下F12 ④选择上方的控制台 ⑤在 ...
- Training: Get Sourced
原题链接:http://www.wechall.net/challenge/training/get_sourced/index.php 提示告诉我们答案就藏在这个界面中,使用View Sourcec ...
- c++题目:切香肠
c++题目:切香肠 题目 题目描述 有 n 条香肠,每条香肠的长度相等.我们打算将这些香肠切开后全部分给 k 名客人,且要求每名客人获得一样多的香肠.请问最少需要切几刀?注意一刀只能切断一条香肠,每个 ...
- 【Devexpress】Gridcontorl动态创建列不显示的问题
通过代码创建列但是不显示,这个原因是因为代码创建的列Visible属性默认是false 所以需要设置为true就会显示了 gridColumn.Visible = true;
- laravel框架部署
每一个 Laravel 程序都会生成一个随机的 32 位长度的字符串存储在 .env 文件中的 APP_KEY 键值中, 当我们新建 Laravel 项目的时候会自动为你创建一个,只有在克隆的时候你才 ...
- 【重难点整理】通过kafka的全过程叙述kafka的原理、特性及常见问题
一.kafka的实现原理 1.逻辑结构 2.组成 生产者:生产消息,来自服务.客户端.端口-- 消息本身:消息主体 topic主题:对消息的分类,例如数仓不同层中的不同类型数据(订单.用户--):自带 ...
- 时间片差分调度法-充分利用MCU的资源
前言 通过该篇学习了嵌入式的任务调度(即时间片论法)后,了解到通过以1ms为调度时间单位轮询判断是否需要执行函数任务,那么下面介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式 ...
- echarts去除下载小图标
toolbox: { show: true, orient: 'vertical', left: 'right', top: 'center', feature: { dataView: { read ...
- JavaScript:代码应该编写在哪里?
我们可以将JS的代码,编写在三个地方. 但是无论编写在哪里,最后它都会嵌入进网页代码中,被浏览器执行. 编写在script标签中 我们可以直接在HTML的script标签中,编写大段JS代码. 编写在 ...