首页 > 代码库 > spring学习——注入静态对象属性
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"); } }
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 }
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 }
4.代码地址
git地址:https://git.oschina.net/blue_phantom/ssmj.git
项目名称:springj
包位置:package com.bluej.springj.start
执行测试类:Main.java
spring学习——注入静态对象属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。