使用工具类的时候,我们想在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工具类注入问题的更多相关文章

  1. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  2. spring中常用工具类介绍

    http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作     Spring 定义了一个 org.springframework.core.io ...

  3. java反射的补充:桥接方法以及Spring中一些工具类

    在上一篇博文中:http://www.cnblogs.com/guangshan/p/4660564.html 源码中有些地方用到了 this.bridgedMethod = BridgeMethod ...

  4. Spring boot中普通工具类不能使用@Value注入yml文件中的自定义参数的问题

    在写一个工具类的时候,因为要用到yml中的自定义参数,使用@Value发现值不能正常注入,都显示为null: yml文件中的自定义格式 调用工具类的时候不能new的方式 要使用@Autowired的方 ...

  5. Spark中常用工具类Utils的简明介绍

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  6. Spring 的优秀工具类盘点

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  7. Spring 的优秀工具类盘点第 2 部分

    特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题. ...

  8. Spring 的优秀工具类盘点---转

    第 1 部分: 文件资源操作和 Web 相关工具类 http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/ 文件资源操作 文件资源的 ...

  9. Java中的工具类究竟如何命名?

    先来几个例子 JDK自带工具类 Arrays.asList(); Objects.equals(); Collections.sort(); Spring框架工具类 StringUtils.isEmp ...

  10. Spring的StringUtils工具类

    本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:<Spring的StringUtils工具类> org.springframework.util.StringU ...

随机推荐

  1. 【Virt.Contest】CF1215(div.2)

    第二次打虚拟赛. CF 传送门 T1:Yellow Cards 黄色卡片 中规中矩的 \(T1\). 首先可以算出一个人也不罚下时发出的最多黄牌数: \(sum=a1*(k1-1)+a2*(k2-1) ...

  2. 08 | 白话容器基础(四):重新认识Docker容器

    你好,我是张磊.今天我和你分享的主题是:白话容器基础之重新认识Docker容器. 在前面的三次分享中,我分别从Linux Namespace的隔离能力.Linux Cgroups的限制能力,以及基于r ...

  3. labuladong

    由于 labuladong 的算法网站频繁被攻击,且国内访问速度可能比较慢,所以本站同时开放多个镜像站点: https://labuladong.gitee.io/algo/ https://labu ...

  4. 通过docker部署grafana和mysql

    阅读本文需要一定的Linux, Docker与MySQL知识, 例如: 会启动容器, 进入容器; 会创建表, 会使用INSERT语句, 会使用SELECT语句... 1. 简介 2. 网络设置 - 2 ...

  5. [CG] 用 Docker 配置 Ubuntu OpenGL 环境

    成功在 MacOS 的 Docker 中运行 OpenGL 程序并显示这里记录一下: 我用的是 https://hub.docker.com/r/thewtex/opengl 这个镜像非常好,大部分工 ...

  6. webpack :There are multiple modules with names that only differ in casing

    1, webpack版本3.6.0 2. 报warning文件为 node_modules 下面webpack 里的hot.js和dev-server.js 3. 没有出现模块名混用大小写 解决方法: ...

  7. from表单前后端数据编码格式-Ajax发送json格式数据-Ajax发送文件-Django自带序列化组件-Ajax结合sweetalert

    目录 一:前后端传输数据的编码格式(contentType) 1.研究post请求数据的编码格式 2.可以朝后端发送post请求的方式 3.前后端传输数据的编码格式 4.研究form表单 5.当for ...

  8. 下载Font Awesome框架

    目录 一:下载Font Awesome框架 二:如何使用font awesome 1.使用图标等样式,点击复制标签即可,需要嵌套在i标签内 2.点击图标,复制标签,然后粘贴使用即可. 3.动态图片等 ...

  9. windowserver中PowerShell禁止脚本执行的解决方法

    最近工作中在上线项目的时候安装Exceptionless时,运行powershell脚本,发现报错: 报错提示:You cannot run this script on the current sy ...

  10. 周结之json补充、正则re模块、hashlib模块、logging模块

    周结 目录 周结 json补充 正则表达式 re模块 第三方模块的下载 request模块 办公自动化openpyxl模块 hashlib加密模块 subprocess模块 logging日志模块 j ...