• spring学习——注入静态对象属性


      spring注入静态对象属性时,因为虚拟机类加载问题,直接在属性上使用@Autowired 是不可以的。需要在属性对应的set方法上@Autowired,并且,set方法不能定义为static。

    1.创建静态对象属性对应的类

    package com.bluej.springj.service.impl;
    
    import org.springframework.stereotype.Service;
    
    import com.bluej.springj.service.LogService;
    
    @Service("logService")
    public class LogServiceImpl implements LogService {
    
        public void doLog() {
            System.out.println("LogServiceImpl.doLog");
    
        }
    
    }
    LogService类代码

    2.创建spring使用的对象

     1 package com.bluej.springj.service.impl;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.stereotype.Service;
     5 
     6 import com.bluej.springj.service.CheckService;
     7 import com.bluej.springj.service.LogService;
     8 
     9 @Service("checkService")
    10 public class CheckServiceImpl implements CheckService {
    11     
    12     private static LogService logService;
    13 
    14     public boolean doCheck(Object obj) {
    15         System.out.println("CheckServiceImpl.doCheck");
    16         logService.doLog();
    17         return false;
    18     }
    19 
    20     @Autowired
    21     public  void setLogService(LogService logService) {
    22         CheckServiceImpl.logService = logService;
    23     }
    24 }
    CheckServiceImpl 类

    3.调用示例

     1 package com.bluej.springj.start;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 import com.bluej.springj.service.CheckService;
     7 
     8 public class Main {
     9     public static void main(String[] args) {
    10         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    11         CheckService checkService = applicationContext.getBean("checkService", CheckService.class);
    12         checkService.doCheck(new Object());
    13     }
    14 }
    Main类

    4.代码地址

    git地址:https://git.oschina.net/blue_phantom/ssmj.git

    项目名称:springj

    包位置:package com.bluej.springj.start

    执行测试类:Main.java

  • 相关阅读:
    Microsoft.VisualBasic.PowerPacks相关错误解决办法
    GridView绑定技巧终结者
    类型初始值设定项引发异常处理办法
    目前为目最全的CURL中文说明CURL
    [转]大型网站架构之优酷篇
    [原]ecshop代码分析二(缓存处理)
    [转]大型网站架构不得不考虑的10个问题
    [原]ecshop代码分析一(init.php文件)
    发布一款坐标转换软件
    坐标换算软件操作方法及下载地址
  • 原文地址:https://www.cnblogs.com/bluej/p/6594249.html
Copyright © 2020-2023  润新知