一、构造方法方式注入

1、项目结构如下:

2、新建Customer类

  1. package hjp.spring.attributeinject;
  2.  
  3. public class Customer {
  4. private String name;
  5. private Integer age;
  6. private String city;
  7.  
  8. public Customer() {
  9.  
  10. }
  11.  
  12. public Customer(String name, Integer age) {
  13. this.name = name;
  14. this.age = age;
  15. }
  16.  
  17. public Customer(Integer age, String city) {
  18. this.age = age;
  19. this.city = city;
  20. }
  21.  
  22. public String getName() {
  23. return name;
  24. }
  25.  
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29.  
  30. public Integer getAge() {
  31. return age;
  32. }
  33.  
  34. public void setAge(Integer age) {
  35. this.age = age;
  36. }
  37.  
  38. public String getCity() {
  39. return city;
  40. }
  41.  
  42. public void setCity(String city) {
  43. this.city = city;
  44. }
  45.  
  46. @Override
  47. public String toString() {
  48. return "Customer [name=" + name + ", age=" + age + ", city=" + city + "]";
  49. }
  50. }

Cusomer

3、新建beans.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!-- 如果没有配置 constructor-arg节点,则使用无参构造器-->
  7. <bean id="customerId" class="hjp.spring.attributeinject.Customer">
  8. <!--constructor-arg 配置构造参数
  9. index 表示参数索引号
  10. type 设置参数数据类型
  11. value 设置普通数据
  12. ref 设置引用数据
  13.  
  14. 如果只使用index和value,而不指定数据类型,则默认匹配符合条件的第一个构造函数
  15. 如果配置了type,那么索引处的数据类型要对应正确
  16. -->
  17. <constructor-arg index="0" value="23" type="java.lang.Integer"></constructor-arg>
  18. <constructor-arg index="1" value="Tom" type="java.lang.String"></constructor-arg>
  19. </bean>
  20. </beans>

4、新建测试类

  1. package hjp.spring.attributeinject;
  2.  
  3. import org.junit.Test;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6.  
  7. public class TestApp {
  8. @Test
  9. public void demo1() {
  10. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
  11. "hjp/spring/attributeinject/beans.xml");
  12. Customer customer = applicationContext.getBean("customerId", Customer.class);
  13. System.out.println(customer);
  14. }
  15. }

二、setter方法注入

1、新增类Contact

  1. package hjp.spring.attributeinject;
  2.  
  3. public class Contact {
  4. private String address;
  5. private String telphone;
  6.  
  7. public String getAddress() {
  8. return address;
  9. }
  10.  
  11. public void setAddress(String address) {
  12. this.address = address;
  13. }
  14.  
  15. public String getTelphone() {
  16. return telphone;
  17. }
  18.  
  19. public void setTelphone(String telphone) {
  20. this.telphone = telphone;
  21. }
  22.  
  23. @Override
  24. public String toString() {
  25. return "Contact [address=" + address + ", telphone=" + telphone + "]";
  26. }
  27. }

Contact

2、为Customer类新增属性contact,新增构造函数

public Customer(String name,Integer age,Contact contact){
this.name=name;
this.age=age;
this.contact=contact;
}

  1. package hjp.spring.attributeinject;
  2.  
  3. public class Customer {
  4. private String name;
  5. private Integer age;
  6. private String city;
  7.  
  8. private Contact contact;
  9.  
  10. public Contact getContact() {
  11. return contact;
  12. }
  13.  
  14. public void setContact(Contact contact) {
  15. this.contact = contact;
  16. }
  17.  
  18. public Customer() {
  19.  
  20. }
  21.  
  22. public Customer(String name, Integer age) {
  23. this.name = name;
  24. this.age = age;
  25. }
  26.  
  27. public Customer(Integer age, String city) {
  28. this.age = age;
  29. this.city = city;
  30. }
  31.  
  32. public Customer(String name,Integer age,Contact contact){
  33. this.name=name;
  34. this.age=age;
  35. this.contact=contact;
  36. }
  37.  
  38. public String getName() {
  39. return name;
  40. }
  41.  
  42. public void setName(String name) {
  43. this.name = name;
  44. }
  45.  
  46. public Integer getAge() {
  47. return age;
  48. }
  49.  
  50. public void setAge(Integer age) {
  51. this.age = age;
  52. }
  53.  
  54. public String getCity() {
  55. return city;
  56. }
  57.  
  58. public void setCity(String city) {
  59. this.city = city;
  60. }
  61.  
  62. @Override
  63. public String toString() {
  64. return "Customer [name=" + name + ", age=" + age + ", city=" + city + ", contact=" + contact + "]";
  65. }
  66. }

Customer

3、更改beans.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <bean id="customerId" class="hjp.spring.attributeinject.Customer">
  7. <property name="name" value="Tom"></property>
  8. <property name="age" value="23"></property>
  9. <property name="contact" ref="contactId"></property>
  10. </bean>
  11. <bean id="contactId" class="hjp.spring.attributeinject.Contact">
  12. <property name="address" value="北京"></property>
  13. <property name="telphone" value="12345678"></property>
  14. </bean>
  15. </beans>

4、测试类不变

三、集合注入

1、项目结构:

2、新建CollectionTest类

  1. package hjp.spring.attributeinject.collection;
  2.  
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Properties;
  7. import java.util.Set;
  8.  
  9. public class CollectionTest {
  10. private List<String> listData;
  11. private Set<String> setData;
  12. private Map<String, String> mapData;
  13. private String[] arrayData;
  14. private Properties propsData;
  15.  
  16. public List<String> getListData() {
  17. return listData;
  18. }
  19.  
  20. public void setListData(List<String> listData) {
  21. this.listData = listData;
  22. }
  23.  
  24. public Set<String> getSetData() {
  25. return setData;
  26. }
  27.  
  28. public void setSetData(Set<String> setData) {
  29. this.setData = setData;
  30. }
  31.  
  32. public Map<String, String> getMapData() {
  33. return mapData;
  34. }
  35.  
  36. public void setMapData(Map<String, String> mapData) {
  37. this.mapData = mapData;
  38. }
  39.  
  40. public String[] getArrayData() {
  41. return arrayData;
  42. }
  43.  
  44. public void setArrayData(String[] arrayData) {
  45. this.arrayData = arrayData;
  46. }
  47.  
  48. public Properties getPropsData() {
  49. return propsData;
  50. }
  51.  
  52. public void setPropsData(Properties propsData) {
  53. this.propsData = propsData;
  54. }
  55.  
  56. @Override
  57. public String toString() {
  58. return "CollectionText [\nlistData=" + listData + ", \nsetData=" + setData + ", \nmapData=" + mapData
  59. + ", \narrayData=" + Arrays.toString(arrayData) + ", \npropsData=" + propsData + "\n]";
  60. }
  61. }

CollectionTest

3、新建beans.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!-- 集合内部,普通值用value,引用值用ref -->
  7. <bean id="collectionTestId" class="hjp.spring.attributeinject.collection.CollectionTest">
  8. <!-- list集合 -->
  9. <property name="listData">
  10. <list>
  11. <value>Jim</value>
  12. <value>Tom</value>
  13. <value>Jerry</value>
  14. </list>
  15. </property>
  16. <!-- set集合 -->
  17. <property name="setData">
  18. <set>
  19. <value>张三</value>
  20. <value>李四</value>
  21. <value>王五</value>
  22. </set>
  23. </property>
  24. <!-- map集合 -->
  25. <property name="mapData">
  26. <map>
  27. <!-- 第一种写法 -->
  28. <entry key="A" value="a"></entry>
  29. <entry key="B" value="b"></entry>
  30. <entry key="C" value="c"></entry>
  31. <!-- 第二种写法 -->
  32. <entry>
  33. <key>
  34. <value>D</value>
  35. </key>
  36. <value>d</value>
  37. </entry>
  38. </map>
  39. </property>
  40. <!-- 数组 -->
  41. <property name="arrayData">
  42. <array>
  43. <value>a</value>
  44. <value>b</value>
  45. <value>c</value>
  46. </array>
  47. </property>
  48. <!-- Properties -->
  49. <property name="propsData">
  50. <props>
  51. <prop key="X">x</prop>
  52. <prop key="Y">y</prop>
  53. <prop key="Z">z</prop>
  54. </props>
  55. </property>
  56. </bean>
  57. </beans>

beans

4、新建测试类

  1. package hjp.spring.attributeinject.collection;
  2.  
  3. import org.junit.Test;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6.  
  7. public class TestApp {
  8. @Test
  9. public void demo1() {
  10. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
  11. "hjp/spring/attributeinject/collection/beans.xml");
  12. CollectionTest collectionTest = applicationContext.getBean("collectionTestId", CollectionTest.class);
  13. System.out.println(collectionTest);
  14. }
  15. }

spring属性依赖注入的更多相关文章

  1. Spring 属性依赖注入

    1.1    属性依赖注入 依赖注入方式:手动装配 和 自动装配 手动装配:一般进行配置信息都采用手动 基于xml装配:构造方法.setter方法 基于注解装配: 自动装配:struts和spring ...

  2. (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)

    Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring ...

  3. Spring的依赖注入(DI)三种方式

    Spring依赖注入(DI)的三种方式,分别为: 1.  接口注入 2.  Setter方法注入 3.  构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...

  4. 一步一步深入spring(3)--spring的依赖注入方式

    对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,sprin ...

  5. spring的依赖注入是什么意思

    最近学习spring框架,对依赖注入有些模糊,遂上网翻阅资料,做了下列总结,原博客为CSDN 南夏的 spring的依赖注入是什么意思,侵删! Spring 能有效地组织J2EE应用各层的对象.不管是 ...

  6. Spring.NET依赖注入框架学习--实例化容器常用方法

    Spring.NET依赖注入框架学习---实例化容器常用方法 本篇学习实例化Spring.NET容器的俩种方式 1.通过XmlObjectFactory创建一个Spring.NET容器 IResour ...

  7. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

  8. Spring.NET依赖注入框架学习-- 泛型对象的创建和使用

    Spring.NET依赖注入框架学习-- 泛型对象的创建和使用 泛型对象的创建方法和普通对象是一样的. 通过构造器创建泛型对象 下面是一个泛型类的代码: namespace GenericsPlay ...

  9. Spring中依赖注入的四种方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...

随机推荐

  1. CSS选择器的权重与优先规则

    权重顺序 “important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符”.   原文:http://w ...

  2. C语言 百炼成钢2

    //题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<st ...

  3. Oracle11G安装之后

    本人对oracle还处于摸索阶段,今天安装了一下Oracle11G, 安装之后,后台管理端的登录地址:https://172.16.10.75:1158/em 1.使用之前设置的dba管理员密码账号登 ...

  4. java.sql.SQLException: 对只转发结果集的无效操作: last

    出错代码如下:static String u = "user";static String p = "psw";static String url = &quo ...

  5. 用python简单处理图片(3):添加水印

    python版本:3.4 Pillow版本:3.0 一.添加文字水印 from PIL import Image, ImageDraw,ImageFont im = Image.open(" ...

  6. Java系列:Add Microsoft SQL JDBC driver to Maven

    Maven does not directly support some libraries, like Microsoft's SQL Server JDBC. This tutorial will ...

  7. Linux(9.28-10.4)学习笔记

    三种数字表示 无符号数: 基于传统的二进制表示法,表示大于或者等于零的数字. 补码(有符号数): 表示有符号数整数的最常见的方式,有符号数就是只可 以为正或者为负的数. 浮点数: 表示实数的科学计数法 ...

  8. 物联网-手机远程控制家里的摄像头(2) - POP3和SMTP的C语言精简实现

    在上一篇博客里面,使用了Python来发送.接收mail,但是实际测试中出现了一些不稳定的 情况,而且Python和即将使用的opencv会不兼容,使用进程间通讯或者其他方法会让整个系统 显得复杂而且 ...

  9. IE firefox 兼容性整理

    1.尽量用jquery操作. 2.jquery取值时要用准确的方法,attr(), val(), text(), html(). 例如: <span value="a"> ...

  10. NuGet更新引用Dll

    第一种 通过 "Add Library Package Reference..." 添加 点击 ‘Add Library Package Reference...’ , 搜索你要添 ...