首页 > 学院 > 开发设计 > 正文

7、spring 依赖注入(DI)

2019-11-08 02:51:45
字体:
来源:转载
供稿:网友

7、sPRing 依赖注入(DI)

在spring框架中,主要有以下四种依赖注入的方式

setter方法注入构造器注入静态方法注入

实例工厂注入

在实际的运用中主要使用前两种,所以在本文中也主要介绍前两种DI方式


示例1:setter方法依赖注入

目录结构如下: 这里写图片描述

配置文件bean.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="HelloWorldHelprt" class="com.main.autowrite.DI.HelloWorldHelper"> <property name="helloWorldImpl" ref="helloWorldImpl" /> </bean> <bean id="helloWorldImpl" class="com.main.autowrite.DI.HelloWorldImpl"/></beans>

HelloWorld.java

package com.main.autowrite.DI;public interface HelloWorld { public void sayHello();}

HelloWorldImpl.java

package com.main.autowrite.DI;public class HelloWorldImpl implements HelloWorld{ public void sayHello() { System.out.println("Hello world"); }}

HelloWorldHelper.java

package com.main.autowrite.DI;public class HelloWorldHelper { private HelloWorldImpl helloWorldImpl; public HelloWorldHelper(){ } public void setHelloWorldImpl(HelloWorldImpl helloWorldImpl){ this.helloWorldImpl = helloWorldImpl; } public void sayHello(){ helloWorldImpl.sayHello(); }}

测试方法:

@Test public void test(){ applicationContext context = new ClassPathXmlApplicationContext("com/main/autowrite/DI/bean.xml"); HelloWorldHelper helper = (HelloWorldHelper)context.getBean("HelloWorldHelprt"); helper.sayHello(); }

例子2:构造器方法依赖注入

在例子1的基础上

修改HelloWorldHelper类如下:

package com.main.autowrite.DI;public class HelloWorldHelper { private HelloWorldImpl helloWorldImpl; public HelloWorldHelper(HelloWorldImpl helloWorldImpl){ this.helloWorldImpl = helloWorldImpl; } public void sayHello(){ helloWorldImpl.sayHello(); }}

bean.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="HelloWorldHelprt" class="com.main.autowrite.DI.HelloWorldHelper"> <constructor-arg> <ref bean="helloWorldImpl" /> </constructor-arg> </bean> <bean id="helloWorldImpl" class="com.main.autowrite.DI.HelloWorldImpl"/></beans>

测试方法和例子1的一致,无需更改

两个例子的运行结果均是下图的结果: 这里写图片描述

如需了解静态工厂以及实例工厂的依赖注入,请点击这里学习


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表