Spring学习 Ioc篇(二 )
5、spring依赖注入的方式
方法一:使用构造器方式进行注入
1、dao的类和接口
- package com.cvicse.dao.impl;
- import com.cvicse.dao.PersonDao;
- public class PersonDaoBean implements PersonDao {
- public void add(){
- System.out.println("执行PersonDaoBean中的add()方法");
- }
- }
- package com.cvicse.service;
- public interface PersonService {
- public void save();
- }
2、service类
- import com.cvicse.dao.PersonDao;
- import com.cvicse.service.PersonService;
- public class PersonServiceBean implements PersonService {
- private PersonDao personDao;
- private String name;
- public PersonServiceBean(PersonDao personDao, String name) {
- this.personDao = personDao;
- this.name = name;
- }
- public void save(){
- System.out.println(name);
- personDao.add();
- }
- }
要在构造函数进行注入,应采用如下的方式进行配置
- <bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" />
- <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
- <constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"/>
- <constructor-arg index="1" type=“java.lang.String” value="基本类型"/>
- </bean>
方法二:使用setter方法进行注入
采用setter的方法进行注入时,基本属性和业务对象的注入有所不同,而基本类型的中的集合注入也是应该注意的。
1、service类
- public class PersonServiceBean implements PersonService {
- private Set<String> sets = new HashSet<String>();
- private List<String> lists = new ArrayList<String>();
- private Properties properties = new Properties();
- private Map<String, String> maps = new HashMap<String, String>();
- public Map<String, String> getMaps() {
- return maps;
- }
- public void setMaps(Map<String, String> maps) {
- this.maps = maps;
- }
- public Properties getProperties() {
- return properties;
- }
- public void setProperties(Properties properties) {
- this.properties = properties;
- }
- public Set<String> getSets() {
- return sets;
- }
- public void setSets(Set<String> sets) {
- this.sets = sets;
- }
- public List<String> getLists() {
- return lists;
- }
- public void setLists(List<String> lists) {
- this.lists = lists;
- }
- public void save(){
- }
- }
2.XML中的配置(注意,各种类型都具有了)
- <bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" />
- <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
- <!--业务对象的注入方式 -->
- <property name="personDao" ref="personDao" />
- <!--基本属性的注入方式 -->
- <property name="name" value="itcast" />
- <property name="id" value="88" />
- <!--集合的注入方式 -->
- <property name="sets">
- <set>
- <value>第一个</value>
- <value>第二个</value>
- <value>第三个</value>
- </set>
- </property>
- <property name="lists">
- <list>
- <value>第一个list元素</value>
- <value>第二个list元素</value>
- <value>第三个list元素</value>
- </list>
- </property>
- <property name="properties">
- <props>
- <prop key="key1">value1</prop>
- <prop key="key2">value2</prop>
- <prop key="key3">value3</prop>
- </props>
- </property>
- <property name="maps">
- <map>
- <entry key="key-1" value="value-1" />
- <entry key="key-2" value="value-2" />
- <entry key="key-3" value="value-3" />
- </map>
- </property>
- </bean>
另外,对于业务对象,还具有如下的内部bean配置方式,但如果这样配置了,则该bean只能由外边的bean用
- <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
- <!-- 使用内部bean进行注入-->
- <property name="personDao">
- <bean class="cn.itcast.dao.impl.PersonDaoBean"/>
- </property>
- </bean>
方法三:使用Filed方式注入(即注解方式注入)
Spring学习 Ioc篇(二 )的更多相关文章
- Spring学习 Ioc篇(一 )
一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现.就从Ioc篇开始学习. ...
- Spring学习 Ioc篇(三)
1.在注解注入方式中,首先要在xml中引入如下的红线的命名空间: <?xml version="1.0" encoding="UTF-8" ?> & ...
- 死磕Spring之IoC篇 - 文章导读
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - BeanDefinition 的解析阶段(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - BeanDefinition 的解析过程(面向注解)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - 开启 Bean 的加载
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - Bean 的创建过程
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
随机推荐
- 两种JS方法实现斐波那契数列
第一种方法:递归 function fibonacci(n){ if (n==0){ return 0; }else if (n==1){ return 1; } return fibonacci(n ...
- Windows—JDK安装与环境变量配置
本文介绍JDK的安装与环境变量配置. 工具/原料 JDK1.8.0_65 WIN7 32bit jdk-8u65-windows-i586.exe 方法/步骤 安装JDK 选择安装目录 安装过程中会 ...
- iOS开发Swift篇—(九)属性
iOS开发Swift篇—(九)属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要1个. ...
- $('div','li'),$('div , li'),$('div li')的区别
要搞清楚$('div','li') 和 $('div , li') 和 $('div li') 区别: $('div','li'):是$(子,父),是从父节点里找子,而不是找li外面的div $('d ...
- Sae上传war包找不到编译文件
最近在试新浪的sae平台,有个问题困扰了几天,现在想来还是自己对JAVA的理解不深入,这里写下仅作记忆. 问题:在整微信公众号平台进开发者中心的时候,token验证一直是失败的.但是项目在本地的环境中 ...
- Visual Studio 2008打开vs2010解决方案的方法
一个朋友遇到了个问题:用visual studio 2008软件,无法打开一个asp.net网站的sln解决方案.如下图,原因是此解决方案由vs2010生成的,必须由vs2010运行程序打开. 这样一 ...
- 第十章:Intent详解
[正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用 ...
- php dirname(__FILE__) 获取当前文件的绝对路径 (转)
比如当前文件是放在(d:\www\)下,文件名是test.php. 测试的代码如下: 复制代码 代码如下: <?php echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\ ...
- hasLayout与BFC的触发条件
hasLayout与BFC是分别在IE和其他浏览器上的两个作用很相近的概念,在很多时候,我们需要触发它们去实现有些效果.例如清除浮动时需要触发hasLayout与BFC:很多自适应的两栏和三栏布局(两 ...
- 简单的线性分类——MATLAB,python3实现
看李政轩老师讲的Kernel,讲的非常好!前面有几道作业题,用MATLAB简单做了下,不知道对不对,错误之处还请指出. 题目是这样的. 一.MATLAB版本: clear; clc % 生成train ...