博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring IOC (构造器注入)
阅读量:5221 次
发布时间:2019-06-14

本文共 2149 字,大约阅读时间需要 7 分钟。

Spring IOC

1,  概念解释:

依赖注入:每个对象负责管理与自己协作的对象(即它所依赖的对象)的引用,这将导致高度耦合和难以测试的代码。而依赖注入则是对象的依赖关系将由负责协调系统中各个对象的第三方组件在创建对象时设定。对象无需自行创建或管理它们的依赖关系——依赖关系将被自动注入到需要它们的对象中去。

2,  注入的方式:

1)        构造器注入。

例子:

a)接口一:Performer

package spring.di;

public interface Performer {

    void performer() ;

}

b)实现接口的实现类:PoeticJuggler //会念诗的杂技人

package spring.di;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

public class PoeticJuggler extends Juggler {

       private Poem poem;

       private int beanBags;

       public PoeticJuggler(Poem poem) {

             

              this.poem = poem;

       }

       public PoeticJuggler(int beanBags, Poem poem) {

              this.beanBags = beanBags;

              this.poem = poem;

       }

       @Override

       public void performer() {

              System.out.println("JUGGLING " + beanBags + " Beanbags");

              System.out.println("While reciting...");

              poem.recite();

       }

       public static void main(String[] args) {

              ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

              Performer performer = (Performer)ctx.getBean("Juggler");

              performer.performer();

       }

}

C)接口2:Poem

package spring.di;

public interface Poem {

       void recite();

}

D)实现接口2的实现类:Sonnet29

package spring.di;

 

public class Sonnet29 implements Poem {

 

       public void recite() {

              // TODO Auto-generated method stub

              System.out.println("hi!");

       }

}

综上:

已经有了两个接口和实现了两个接口的实现类,然后需要做的下一步是把poem关联进PoeticJuggler里。这时可以用Spring的依赖注入。采用构造器注入的方式。

编写的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="userService" class="tao.UserService"></bean> -->

   <!-- <bean id="userServiceImpl" class="tao.UserServiceImpl"></bean> -->

   <bean id="pom" class="spring.di.Sonnet29" />

   <bean id="Juggler" class="spring.di.PoeticJuggler">

              <constructor-arg value = "15"/>

              <constructor-arg ref = "pom"/>

   </bean>

</beans>

 

 

 

3,  关键点:

1)  面向接口编程和依赖注入,实现松耦合。这是编程的思路。

2)  value和ref的区别:

value是指为简单类型复制,如:int,String等。

而ref属性是将ID为sonnet29的Bean引用(不是简单类型)传递给构造器。

转载于:https://www.cnblogs.com/bt575876212/p/4885603.html

你可能感兴趣的文章
SQL Server 如何查询表定义的列和索引信息
查看>>
项目上传到github上
查看>>
GCD 之线程死锁
查看>>
NoSQL数据库常见分类
查看>>
JS小工具_字符串转16进制数组_02
查看>>
信息安全系统设计基础实验四—20135214万子惠20135227黄晓妍
查看>>
一题多解 之 Bat
查看>>
Java 内部类
查看>>
测试一个对象是否是类字符串
查看>>
{面试题7: 使用两个队列实现一个栈}
查看>>
[转]SQL中 OVER(PARTITION BY) 取上一条,下一条等
查看>>
前端开发就从认识浏览器开始 - 浏览器处理请求的过程
查看>>
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
jmeter系列二(jmeter engine相关)
查看>>
前端页面设计问题小计
查看>>
一份超全超详细的 ADB 用法大全
查看>>
Spring定时任务(@Scheduled)
查看>>
WebView 调试
查看>>
IB使用
查看>>