02-Spring-spring ioc注入的三种方式
来源:互联网 发布:淘宝定位在哪 编辑:程序博客网 时间:2024/05/01 03:56
一、spring ioc注入有哪三种方式:
a setter
原理 : 在目标对象中,定义需要注入的依赖对象对应的属性和setter方法;“让ioc容器调用该setter方法”,将ioc容器实例化的依赖对象通过setter注入给目标对象,封装在目标对象的属性中。
b 构造器
原理 : 为目标对象提供一个构造方法,在构造方法中添加一个依赖对象对应的参数。ioc容器解析时,实例化目标对象时会自动调用构造方法,ioc只需要为构造器中的参数进行赋值;将ioc实例化的依赖对象作为构造器的参数传入。
【接口注入
原理 : 为依赖对象提供一个接口实现,将接口注入给目标对象,实现将接口的实现类注入的效果。比如HttpServletRequest HttpServletResponse接口
注意:这是ioc提供的方式,spring中的ioc技术并没有实现该种注入方式】
c 方法注入
原理 : 在目标对象中定义一个普通的方法,将方法的返回值设置为需要注入的依赖对象类型。通过ioc容器调用该方法,将其创建的依赖对象作为方法的返回值返回给目标对象。
二、具体实现
三种方法在实现上主要是被注入类以及applicationContext.xml不同,具体写法包括参数配置如下:
action:
package com.etoak.action;import com.etoak.dao.UserDaoImpl;public class LoginAction { /* * 1 setter注入 struts2表单项封装就是用了setter注入 * private UserDaoImpl ud; public void setUd(UserDaoImpl ud,String name) { this.ud = ud; } */ /* * 2 构造器方式 构造器参数不固定,在xml中描述 private UserDaoImpl ud; private String name; public LoginAction(UserDaoImpl ud,String name){ this.ud = ud; this.name = name; } */ /* * 3 方法注入:方法的返回值为要注入的对象类型 */ public UserDaoImpl etoak(){ return null; } public void init(){ System.out.println("loginActoin初始化了"); } public String execute() throws Exception{ etoak().login(); /*ud.login(); System.out.println("name---->"+name);*/ return "success"; }}
applicationContext.xml:
<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-3.2.xsd" default-lazy-init="true"> <!-- default-lazy-init="true" 将bean对象初始化延迟到getBean(),而不是容器启动时自动初始化 --> <!-- 目的:使用spring的ioc技术管理LoginAction、UserDaoImpl 实现被动注入 被动注入前提:两个对象都需要交由ioc容器管理 init-method:在bean初始化时自动执行 property:setter方法注入 constructor-arg : 为当前调用的构造器赋值 index值为构造器第几个参数 ref: 表示赋值的类型为自定义的类型(引用) value: 为String 、 基本数据类型、 class类型赋值 lookup-method : 方法注入,bean值为要注入的对象, name为方法名 scope : singleton 单例 prototype 原型 request ioc实例化的bean对象存储在request还是在session范围内,这两个取值仅在web环境下 session --> <bean id="action" class="com.etoak.action.LoginAction" init-method="init" lazy-init="true" scope="singleton"> <!-- <property name="ud" ref="dao"></property> setter注入--> <!-- <constructor-arg index="0" ref="dao"></constructor-arg> 构造器注入:有几个参数赋几个 <constructor-arg index="1" value="aaa"></constructor-arg> --> <lookup-method name="etoak" bean="dao"/> <!-- 方法注入 --> </bean> <!-- lazy-init单独这个bean延迟初始化 --> <bean id="dao" class="com.etoak.dao.UserDaoImpl"></bean></beans>
阅读全文
0 0
- 02-Spring-spring ioc注入的三种方式
- Spring IOC的三种注入方式
- Spring三种注入IOC注入方式
- Spring三种注入IOC注入方式
- Spring三种注入IOC注入方式
- Spring IOC三种注入方式比较
- Spring IOC三种注入方式比较
- Spring IOC三种注入方式比较
- Spring IOC三种注入方式比较
- Spring IOC三种注入方式比较
- Spring IOC三种注入方式比较
- Spring IOC 三种注入方式
- Spring Ioc注入的四种方式
- Spring学习(二)spring ioc注入的三种方式
- Spring学习(二)spring ioc注入的三种方式
- Spring IOC三种注入方式分析及比较
- spring详解:spring IOC依赖注入的几种方式
- spring Ioc 依赖注入的三种方式:构造函数注入、setter方法注入和接口注入
- 掌柜大作战(6):Spring+Mybatis+多数据源配置+事务配置
- Android编程权威指南笔记
- 内存管理——段式管理
- Sundar Pichai 和他的谷歌进化论
- # 比较filter,map,reduce
- 02-Spring-spring ioc注入的三种方式
- 获香港证监会颁发牌照的弘量研究,正用智能投顾帮助金融机构降低成本,提升资产管理能力
- 03-Spring-ioc工厂bean深入理解
- 深度好奇提出文档解析框架: 面向对象的神经规划
- 平面内直角坐标系中坐标旋转变换公式
- redis实现分布式锁
- 第6章 图形用户界面
- DeepMind提出Rainbow:整合DQN算法中的六种变体
- 04-Spring-使用ioc注解方式配置bean