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

时间: 2024-09-27 16:48:49

spring学习——注入静态对象属性的相关文章

java的Spring学习1--spring引用及属性(setter,getter)注入

1.目录结构 项目->src->main->java->com.test.ppmoney 设置java文件夹为代码  在Project Structure 里的 Modules里 选择相应的目录 后点击 Sources菜单 项目->src->main->resources 设置resources 文件夹为资源  在Project Structure 里的 Modules里 选择相应的目录 后点击 Resources菜单 2. 在依赖文件 pom.xml里添加 sp

使用SMM框架开发企业级应用-----Spring集合注入和域属性自动注入byName和byType

Spring集合的注入 步骤一:导入依赖 步骤二:创建实体类 步骤三:创建大配置文件 步骤四:测试 域属性自动注入 byName与byType 步骤一:创建两个实体类 public class Student { private Integer stuid; private String stuName; private Teacher teacher; public Teacher getTeacher() { return teacher; } public void setTeacher(

Spring之注入复杂类型属性

注入类: 1 package helloworld; 2 3 import java.util.List; 4 import java.util.Map; 5 import java.util.Properties; 6 7 public class User { 8 private List list; 9 private Map<String, String> map; 10 private Properties pro; 11 12 public void setList(List li

Spring学习系列之——第三章:Spring中Bean的配置(一)

Spring的配置形式有两种:基于XML配置和基于注解配置. Bean的配置方式有以下几种: 通过全类名,即通过反射的方式: 通过工厂方法,有静态工厂方法和实例工厂方法: 通过FactoryBean配置: 通过XML文件配置bean 本篇文章将按照下面的目录来说明基于XML的方式配置bean JavaBean的创建 通过XML配置的方式来配置bean XMLbean的配置: spring的依赖注入的方式 属性注入 构造器注入 工厂方法注入(很少使用) 测试方法 IoC容器的实例化: Applic

[原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊. 废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便.先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging. 下一步,新建xml文件,建议名称为 app

Spring学习笔记--注入Bean属性

这里通过一个MoonlightPoet类来演示了注入Bean属性property的效果. package com.moonlit.myspring; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.Clas

Spring框架context的注解管理方法之二 使用注解注入对象属性

首先还是xml的配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springfram

Spring学习3—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)

一.思想理解 Spring 能有效地组织J2EE应用各层的对象.不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调.运行.Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对 象无须关心持久层对象的具体实现,各层对象的调用完全面向接口.当系统需要重构时,代码的改写量将大大减少. 上面所说的一切都得宜于Spring的核心机制,依赖注入.依赖注入让bean与