• 静态工具类中使用注解注入service


    在Controller中直接使用service可行,而封装成工具类后调用出错,原因在于不能采用new方式加载service,必须将service的加载过程在服务器运行时进行。

    这是我当时遇到的问题和最后的解决结论:http://bbs.csdn.net/topics/392162820

    这是当时提问的时候有人提供的解决方案文章地址:http://blog.csdn.net/p793049488/article/details/37819121

    解决静态工具类中使用注解注入service的重点在于两点:

    1、在工具类中声明一个该工具类的静态的内部对象

    2、使用注解@PostConstruct把需要使用的service加载到上面定义的静态内部对象中

    例如下面的代码,重点就是29—37行代码:

    ```java package com.shanshan.bo.utils;

    import java.util.List;

    import javax.annotation.PostConstruct;
    import javax.annotation.Resource;

    import org.springframework.stereotype.Component;

    import com.shanshan.bo.pojo.SsFundDimBank;
    import com.shanshan.bo.pojo.SsFundDimCurrencyType;
    import com.shanshan.bo.pojo.SsbiUser;
    import com.shanshan.bo.service.SsFundDimBankService;
    import com.shanshan.bo.service.SsFundDimCurrencyTypeService;
    import com.shanshan.bo.service.SsbiUserService;

    @Component
    public class DataFactoryUtil {

    @Resource
    private SsbiUserService userService;
    
    @Resource
    private SsFundDimBankService bankService;
    
    @Resource
    private SsFundDimCurrencyTypeService currencyTypeService;
    
    private static DataFactoryUtil dataFactoryUtil;
    
    @PostConstruct
    public void init() {
        dataFactoryUtil = this;
        dataFactoryUtil.userService = this.userService;
        dataFactoryUtil.bankService = this.bankService;
        dataFactoryUtil.currencyTypeService = this.currencyTypeService;
    }
    
    /**
     * 根据用户名去数据库查询用户并返回
     * Ps:暂不考虑用户名重复的问题
     * @param username
     * @return User
     */
    public static SsbiUser selectByUsername(String username) {
        if (username != null && !("".equals(username))) {
            return dataFactoryUtil.userService.selectByUserCode(username);
        }
        return null;
    }
    
    /**
     * 查询所有的银行数据并返回
     */
    public static List<SsFundDimBank> selectAllBank() {
        return dataFactoryUtil.bankService.selectAll();
    }
    
    /**
     * 查询所有的币制数据并返回
     */
    public static List<SsFundDimCurrencyType> selectAllCurrencyType() {
        return dataFactoryUtil.currencyTypeService.selectAll();
    }
    

    }

  • 相关阅读:
    es6笔记6^_^generator
    es6笔记5^_^set、map、iterator
    es6笔记4^_^function
    es6笔记3^_^object
    关于eslint的使用与配置,以及prettier的使用
    关于查看本机ssh公钥以及生成公钥
    Github上传图片图床
    力扣剑指Offer:39. 数组中出现次数超过一半的数字
    计蒜客:求平均年龄Python方法
    力扣:面试题59. 滑动窗口的最大值Python题解
  • 原文地址:https://www.cnblogs.com/jpfss/p/9072438.html
Copyright © 2020-2023  润新知