1,提供构造函数来让spring实现构造注入
public class PersonService {
private String name;
//提供bean的构造函数,让spring用构造注入的方式来构造cibean
public PersonService(String name) {
this.name = name;
}
public void info(){
System.out.println("此人的名字为:" + name);
}
}
2,提供setter函数来让spring实现setter注入
package com.supan.spring;
public interface Person {
public void useAxe();
}
package com.supan.spring;
public interface Axe {
public String chop();
}
package com.supan.spring;
public class StoneAxe implements Axe {
public String chop() {
return "石斧砍柴好慢";
}
}
package com.supan.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
[color=red]//实现ApplicationContextAware接口让该bean持有了容器的引用。[/color]
public class Chinese implements Person,ApplicationContextAware {
private ApplicationContext atx;
private Axe axe;
public Axe getAxe() {
return axe;
}
public void setAxe(Axe axe) {
this.axe = axe;
}
public void useAxe() {
System.out.println(axe.chop());
}
@Override
public void setApplicationContext(ApplicationContext atx)
throws BeansException {
this.atx = atx;
}
public ApplicationContext getContext(){
return atx;
}
}
3,spring配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="personService" class="PersonService">
<!-- 采用构造注入的方式 -->
<constructor-arg index="0" value="chenchaoyang"></constructor-arg>
</bean>
<bean id="chinese" class="com.supan.spring.Chinese">
<!-- 采用setter注入的方式 -->
<property name="axe" ref="stoneAxe"></property>
</bean>
<bean id="stoneAxe" class="com.supan.spring.StoneAxe"></bean>
</beans>
3,测试类;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.supan.spring.Person;
public class SpringTest {
public static void main(String[] args) {
//创建spring的ApplicationContext
ApplicationContext ctx = new
ClassPathXmlApplicationContext("applicationContext.xml");
PersonService p =
ctx.getBean("personService",PersonService.class);
p.info();
System.out.println(p2.getContext() == ctx);
Chinese p2 = ctx.getBean("chinese",Chinese.class);
p2.useAxe();
System.out.println(ctx);
}
}
4,结果:
此人的名字为:chenchaoyang
石斧砍柴好慢
分享到:
相关推荐
依赖注入是做什么用的? 依赖注入又称之为控制反转(Inversion of ... 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。引用自百度百科。
1.2 IoC(控制反转)和DI(依赖注入)入门 1 传统的Java类 在工程下创建包ioc,在ioc包中创建类Test。(为了看起来清楚,将三个类写在了同一个Java文件中,其中唯一的public类为Test)。类的含义和关系如下: Car类...
依赖注入和控制反转 1.2。 模块 1.2.1。 核心容器 1.2.2。 数据访问/集成 1.2.3。 web 1.2.4。 AOP和仪表 1 2 5。 测试 1.3。 使用场景 1.3.1。 依赖关系管理和命名约定 Spring依赖和依靠弹簧 Maven依赖管理 艾薇...
spring 依赖注入,设值注入和构造注入的两种实现代码。 用JUNIT做测试
一、前言 依赖注入(Dependency Injection)这个概念的兴起已经有很长时间了,把这个概念融入到框架中达到出神入化...一句话表述他们之间的关系:依赖注入是控制反转的一种实现方式。另一种方式叫依赖查找(Dependency
4 依赖注入:建立对象与对象之间依赖关系的实现,包括接口注入、构造注入、set注入,在Spring中只支持后两种 5 AOP:面向方面编程,我们可以把日志、安全、事务管理等服务(或功能)理解成一个“方面”,那么以前...
spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的...
注入方式有两种:依赖注入和设置注入; IoC的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象。 AOP(Aspect Oriented Programming) (1). AOP面向方面编程基于IoC,是对OOP...
…IOC:控制反转依赖注入。它使程序组件或类之间尽量形成一种松耦合的结构,开发者在使用类的实列之前,需要先创建对象的实列。而IoC是将创建实列的任务交给了IOC容器,这样在开发应用代码的时候只需要直接使用类的...
IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会...
Spring 是一个基于Java的轻量级应用框架,它提供了IoC(控制反转)和AOP(面向方面编程)等功能。BeanFactory和ApplicationContext是Spring中的两个重要组件。BeanFactory 负责读取bean配置文档、管理bean的加载、...
答:控制反转和依赖注入是spring的两大基础作用。主要是将所有组件在spring提供的外部容器中加载。提高安全性,减低耦合性,使各个框架或者类之间的依赖性降低。 什么是声明式的事务管理?为什么要用?spring如何实现...
体验.net2.0的优雅(四):Provider、策略、控制反转和依赖注入 泛型最佳实践 asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型...
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................