博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一、Spring核心机制:依赖注入
阅读量:4073 次
发布时间:2019-05-25

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

  • 设值注入:IOC容器使用变量的setter方法来注入被依赖的对象。
  • 构造注入:IOC容器使用构造器来注入被依赖的对象。

设值注入:

Persion.java

package inter;

public interface Persion {

//定义一个方法
public void useAxe();

}

Axe.java

package inter;

public interface Axe {

//定义一个方法
public String chop();

}

Chinese.java

package entity;

import inter.Axe;

import inter.Persion;

public class Chinese implements Persion {

private Axe axe;//设值注入所需的setter方法public void setAxe(Axe axe){    this.axe=axe;}@Overridepublic void useAxe() {    //调用axe的方法,表明Persion依赖axe对象    System.out.println(axe.chop());}

}

StoneAxe.java

package entity;

import inter.Axe;

public class StoneAxe implements Axe {

@Overridepublic String chop() {    // TODO Auto-generated method stub return "石斧砍柴真慢";}

}

beans.xml

构造注入:


Chinese.java

package entity;

import inter.Axe;

import inter.Persion;

public class Chinese implements Persion {

private Axe axe;//构造注入,采用有参数的构造器public Chinese(Axe axe){    this.axe=axe;}@Overridepublic void useAxe() {    //调用axe的方法,表明Persion依赖axe对象    System.out.println(axe.chop());}

}

beans.xml

两种注入方式对比:

设值注入:

- 与传统的JavaBean的写法更相似,通过setter方法设定依赖关系更加直观,自然。
- 对于复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿,在创建bean实例时,如果依赖的实例较多,必须将依赖的实例同时实例化,造成系统性能下降,采用设值注入就可以避免这个问题。
- 在某些成员变量可选的情况下,多参数的构造器更加笨重。

构造注入:

- 构造注入可以在构造器中决定依赖关系的注入顺序。
- 对于依赖关系无需变化的Bean,构造注入更有用处。因为没有setter方法,所有的依赖关系全部全部在构造器内设定。
- 依赖关系只能在构造器中设定,则只有组件的创建者才能改变组件的依赖关系。对组件的调用者而言,组件内部的依赖关系完全透明,更符合高内聚的原则。

转载地址:http://zbkni.baihongyu.com/

你可能感兴趣的文章
链接点--数据结构和算法
查看>>
servlet中请求转发(forword)与重定向(sendredirect)的区别
查看>>
Spring4的IoC和DI的区别
查看>>
springcloud 的eureka服务注册demo
查看>>
eureka-client.properties文件配置
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
platform_device与platform_driver
查看>>
platform_driver平台驱动注册和注销过程(下)
查看>>
.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
查看>>
c# 如何调用win8自带的屏幕键盘(非osk.exe)
查看>>
build/envsetup.sh 简介
查看>>
Android framework中修改或者添加资源无变化或编译不通过问题详解
查看>>
linux怎么切换到root里面?
查看>>
linux串口操作及设置详解
查看>>
安装alien,DEB与RPM互换
查看>>
编译Android4.0源码时常见错误及解决办法
查看>>
Android 源码编译make的错误处理
查看>>
linux环境下C语言中sleep的问题
查看>>
ubuntu 12.04 安装 GMA3650驱动
查看>>
新版本的linux如何生成xorg.conf
查看>>