zoukankan      html  css  js  c++  java
  • 静态工具类中使用注解注入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行代码:

    复制代码
     1 package com.shanshan.bo.utils;
     2 
     3 import java.util.List;
     4 
     5 import javax.annotation.PostConstruct;
     6 import javax.annotation.Resource;
     7 
     8 import org.springframework.stereotype.Component;
     9 
    10 import com.shanshan.bo.pojo.SsFundDimBank;
    11 import com.shanshan.bo.pojo.SsFundDimCurrencyType;
    12 import com.shanshan.bo.pojo.SsbiUser;
    13 import com.shanshan.bo.service.SsFundDimBankService;
    14 import com.shanshan.bo.service.SsFundDimCurrencyTypeService;
    15 import com.shanshan.bo.service.SsbiUserService;
    16 
    17 @Component
    18 public class DataFactoryUtil {
    19     
    20     @Resource
    21     private SsbiUserService userService;
    22     
    23     @Resource
    24     private SsFundDimBankService bankService;
    25     
    26     @Resource
    27     private SsFundDimCurrencyTypeService currencyTypeService;
    28     
    29     private static DataFactoryUtil dataFactoryUtil;
    30     
    31     @PostConstruct
    32     public void init() {
    33         dataFactoryUtil = this;
    34         dataFactoryUtil.userService = this.userService;
    35         dataFactoryUtil.bankService = this.bankService;
    36         dataFactoryUtil.currencyTypeService = this.currencyTypeService;
    37     }
    38     
    39     /**
    40      * 根据用户名去数据库查询用户并返回
    41      * Ps:暂不考虑用户名重复的问题
    42      * @param username
    43      * @return User
    44      */
    45     public static SsbiUser selectByUsername(String username) {
    46         if (username != null && !("".equals(username))) {
    47             return dataFactoryUtil.userService.selectByUserCode(username);
    48         }
    49         return null;
    50     }
    51     
    52     /**
    53      * 查询所有的银行数据并返回
    54      */
    55     public static List<SsFundDimBank> selectAllBank() {
    56         return dataFactoryUtil.bankService.selectAll();
    57     }
    58     
    59     /**
    60      * 查询所有的币制数据并返回
    61      */
    62     public static List<SsFundDimCurrencyType> selectAllCurrencyType() {
    63         return dataFactoryUtil.currencyTypeService.selectAll();
    64     }
    65 }
    复制代码
  • 相关阅读:
    PHP:__get()、__set()、__isset()、__unset()、__call()、__callStatic()六个魔术方法
    概念:RPG游戏中两个兵种互相攻击的逻辑
    php怎么获取checkbox复选框的内容?
    20150724之问题
    Uploadify 之使用
    oneThink后台添加插件步骤详解
    针对各种浏览器,前端解决方案(持续更新...)
    解决IE8中select下拉列表文字上下不居中的问题
    针对IE6 7 8当独写样式
    document对象详解
  • 原文地址:https://www.cnblogs.com/jpfss/p/10838668.html
Copyright © 2011-2022 走看看