5、spring依赖注入的方式

方法一:使用构造器方式进行注入

1、dao的类和接口

  1. package com.cvicse.dao.impl;
  2. import com.cvicse.dao.PersonDao;
  3. public class PersonDaoBean implements PersonDao {
  4. public void add(){
  5. System.out.println("执行PersonDaoBean中的add()方法");
  6. }
  7. }
  1. package com.cvicse.service;
  2. public interface PersonService {
  3. public void save();
  4. }

2、service类

  1. import com.cvicse.dao.PersonDao;
  2. import com.cvicse.service.PersonService;
  3. public class PersonServiceBean implements PersonService {
  4. private PersonDao personDao;
  5. private String name;
  6. public PersonServiceBean(PersonDao personDao, String name) {
  7. this.personDao = personDao;
  8. this.name = name;
  9. }
  10. public void save(){
  11. System.out.println(name);
  12. personDao.add();
  13. }
  14. }

要在构造函数进行注入,应采用如下的方式进行配置

  1. <bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" />
  2. <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
  3. <constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"/>
  4. <constructor-arg index="1" type=“java.lang.String” value="基本类型"/>
  5. </bean>

方法二:使用setter方法进行注入

采用setter的方法进行注入时,基本属性和业务对象的注入有所不同,而基本类型的中的集合注入也是应该注意的。

1、service类

  1. public class PersonServiceBean implements PersonService {
  2. private Set<String> sets = new HashSet<String>();
  3. private List<String> lists = new ArrayList<String>();
  4. private Properties properties = new Properties();
  5. private Map<String, String> maps = new HashMap<String, String>();
  6. public Map<String, String> getMaps() {
  7. return maps;
  8. }
  9. public void setMaps(Map<String, String> maps) {
  10. this.maps = maps;
  11. }
  12. public Properties getProperties() {
  13. return properties;
  14. }
  15. public void setProperties(Properties properties) {
  16. this.properties = properties;
  17. }
  18. public Set<String> getSets() {
  19. return sets;
  20. }
  21. public void setSets(Set<String> sets) {
  22. this.sets = sets;
  23. }
  24. public List<String> getLists() {
  25. return lists;
  26. }
  27. public void setLists(List<String> lists) {
  28. this.lists = lists;
  29. }
  30. public void save(){
  31. }
  32. }

2.XML中的配置(注意,各种类型都具有了)

  1. <bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" />
  2. <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
  3. <!--业务对象的注入方式 -->
  4. <property name="personDao" ref="personDao" />
  5. <!--基本属性的注入方式 -->
  6. <property name="name" value="itcast" />
  7. <property name="id" value="88" />
  8. <!--集合的注入方式 -->
  9. <property name="sets">
  10. <set>
  11. <value>第一个</value>
  12. <value>第二个</value>
  13. <value>第三个</value>
  14. </set>
  15. </property>
  16. <property name="lists">
  17. <list>
  18. <value>第一个list元素</value>
  19. <value>第二个list元素</value>
  20. <value>第三个list元素</value>
  21. </list>
  22. </property>
  23. <property name="properties">
  24. <props>
  25. <prop key="key1">value1</prop>
  26. <prop key="key2">value2</prop>
  27. <prop key="key3">value3</prop>
  28. </props>
  29. </property>
  30. <property name="maps">
  31. <map>
  32. <entry key="key-1" value="value-1" />
  33. <entry key="key-2" value="value-2" />
  34. <entry key="key-3" value="value-3" />
  35. </map>
  36. </property>
  37. </bean>

另外,对于业务对象,还具有如下的内部bean配置方式,但如果这样配置了,则该bean只能由外边的bean用

  1. <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
  2. <!-- 使用内部bean进行注入-->
  3. <property name="personDao">
  4. <bean class="cn.itcast.dao.impl.PersonDaoBean"/>
  5. </property>
  6. </bean>

方法三:使用Filed方式注入(即注解方式注入)

Spring学习 Ioc篇(二 )的更多相关文章

  1. Spring学习 Ioc篇(一 )

    一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现.就从Ioc篇开始学习. ...

  2. Spring学习 Ioc篇(三)

    1.在注解注入方式中,首先要在xml中引入如下的红线的命名空间: <?xml version="1.0" encoding="UTF-8" ?> & ...

  3. 死磕Spring之IoC篇 - 文章导读

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  4. 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  5. 死磕Spring之IoC篇 - BeanDefinition 的解析阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  6. 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  7. 死磕Spring之IoC篇 - BeanDefinition 的解析过程(面向注解)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  8. 死磕Spring之IoC篇 - 开启 Bean 的加载

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  9. 死磕Spring之IoC篇 - Bean 的创建过程

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

随机推荐

  1. 整理一下以前的Html+css3复习笔记

    一.html5新特性  常用语义标签:nav footer header section mark  功能标签 video audio iframe canvas(画布和绘图功能)  input新ty ...

  2. Google 黑客搜索技巧

    常用的google关键字: foo1 foo2 (也就是关联,比如搜索xx公司 xx美女) operatorfoo filetype123 类型 sitefoo.com 相对直接看网站更有意思,可以得 ...

  3. $.getJSON( )的使用方法简介

    JSON(JavaScript Object Notation)即JavaScript对象表示法,是一种轻量级的数据交换格式.它非常便于编程人员对数据的处理,也便于机器对数据的解析和生成,应用非常广泛 ...

  4. ShopNC小实例

    shopnc 之模式: shopnc一般的url访问为:http://localhost/shopnc1/admin/index.php?act=sui&op=hello Controller ...

  5. Android - 动态调整ListView高度

    布局中,如果设计ListView的高度为包裹内容,那么ListView的高度是随着它的子条目的数量的变化而改变的, 这就可能会导致ListView下面的一些控件的位置也会随着ListView的高度的变 ...

  6. Spring中加载多个Properties配置文件

    单个配置: <bean id="propertyConfigurer" class="org.springframework.beans.factory.confi ...

  7. mysql之存储过程

    一.存储过程     迄今为止,使用的大多数 SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成.例如,考虑以下的情形.         1. ...

  8. 使用本地JConsole监控远程JVM (转)

    问题背景   Tomcat经常崩溃crash,想看看JVM内存使用情况,就想到了用Jconsole监控,以前只是监控本地的JVM,这次要监控远程的,遇到了不少问题.   经过几个小时的努力,参考了众多 ...

  9. linux命令:more

    1.命令介绍: more用来逐页输出文件内容,空格键进入到下一页,b键返回到上一页. 2.命令格式: more [选项] 文件 3.命令参数 +n      从笫n行开始显示 -n       定义屏 ...

  10. OD调试篇10

    今天破解一个用VB写的软件 先记住一个软件PEiD.exe 这是一个可以看出由什么语言编写程序的软件   非常好用 我把今天要破解的软件拖进去了,发现这就是一个用VB写的程序 这些呢是VB破解的关键 ...