使用工具类的时候,我们想在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. 微信公众号调试经常报access_token is invalid or not latest rid

    是因为我没有使用中控服务器,所以服务器上使用同一个appid和secret获取了access_token 调试的时候再重新获取了一个新的access_token,所以导致微信服务器发放了新的acces ...

  2. i春秋broken

    点开一个附带超链接的网页,直接点击file跳转到broken网页 网页里面是一个jsfuck代码 Jsfuck代码的执行方法 ①复制 ②打开firefox浏览器 ③按下F12 ④选择上方的控制台 ⑤在 ...

  3. Training: Get Sourced

    原题链接:http://www.wechall.net/challenge/training/get_sourced/index.php 提示告诉我们答案就藏在这个界面中,使用View Sourcec ...

  4. c++题目:切香肠

    c++题目:切香肠 题目 题目描述 有 n 条香肠,每条香肠的长度相等.我们打算将这些香肠切开后全部分给 k 名客人,且要求每名客人获得一样多的香肠.请问最少需要切几刀?注意一刀只能切断一条香肠,每个 ...

  5. 【Devexpress】Gridcontorl动态创建列不显示的问题

    通过代码创建列但是不显示,这个原因是因为代码创建的列Visible属性默认是false 所以需要设置为true就会显示了 gridColumn.Visible = true;

  6. laravel框架部署

    每一个 Laravel 程序都会生成一个随机的 32 位长度的字符串存储在 .env 文件中的 APP_KEY 键值中, 当我们新建 Laravel 项目的时候会自动为你创建一个,只有在克隆的时候你才 ...

  7. 【重难点整理】通过kafka的全过程叙述kafka的原理、特性及常见问题

    一.kafka的实现原理 1.逻辑结构 2.组成 生产者:生产消息,来自服务.客户端.端口-- 消息本身:消息主体 topic主题:对消息的分类,例如数仓不同层中的不同类型数据(订单.用户--):自带 ...

  8. 时间片差分调度法-充分利用MCU的资源

    前言 通过该篇学习了嵌入式的任务调度(即时间片论法)后,了解到通过以1ms为调度时间单位轮询判断是否需要执行函数任务,那么下面介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式 ...

  9. echarts去除下载小图标

    toolbox: { show: true, orient: 'vertical', left: 'right', top: 'center', feature: { dataView: { read ...

  10. JavaScript:代码应该编写在哪里?

    我们可以将JS的代码,编写在三个地方. 但是无论编写在哪里,最后它都会嵌入进网页代码中,被浏览器执行. 编写在script标签中 我们可以直接在HTML的script标签中,编写大段JS代码. 编写在 ...