1. DI依赖注入, 前提必须有IOC的环境, Spring管理这个类的时候将类的依赖的属性注入(设置)进来。

2. Spring的属性注入

2.1. 构造方法的方式的属性注入

2.2. Set方法的方式的属性注入

2.3. 集合类型属性注入

3. 依赖注入实例

3.1. 新建一个名为SpringDI的Java工程, 拷入Spring相关包

3.2. 创建Student.java

package com.lywgames.bean;public class Student {private int id;private String name;public Student(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}}

3.3. 创建Teacher.java

package com.lywgames.bean;public class Teacher {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Teacher [id=" + id + ", name=" + name + "]";}}

3.4. 创建Clazz.java

package com.lywgames.bean;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;public class Clazz {private Teacher teacher;private String[] clazzName;private List<Student> studentList;private Set<Student> studentSet;private Map<Integer, Student> studentMap;public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}public String[] getClazzName() {return clazzName;}public void setClazzName(String[] clazzName) {this.clazzName = clazzName;}public List<Student> getStudentList() {return studentList;}public void setStudentList(List<Student> studentList) {this.studentList = studentList;}public Set<Student> getStudentSet() {return studentSet;}public void setStudentSet(Set<Student> studentSet) {this.studentSet = studentSet;}public Map<Integer, Student> getStudentMap() {return studentMap;}public void setStudentMap(Map<Integer, Student> studentMap) {this.studentMap = studentMap;}@Overridepublic String toString() {return "Clazz [teacher=" + teacher + ", clazzName=" + Arrays.toString(clazzName) + ", studentList=" + studentList + ", studentSet=" + studentSet+ ", studentMap=" + studentMap + "]";}}

3.5. 创建Test.java

package com.lywgames;import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.lywgames.bean.Clazz;
import com.lywgames.bean.Student;
import com.lywgames.bean.Teacher;public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");System.out.println(context.getBean(Student.class).toString());System.out.println(context.getBean(Teacher.class).toString());System.out.println(context.getBean(Clazz.class).toString());context.close();}
}

3.6. 在src目录下创建applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd"><!-- 构造函数注入 --><bean id="student" class="com.lywgames.bean.Student"> <constructor-arg name="id" value="101"></constructor-arg><constructor-arg name="name" value="zhangsan"></constructor-arg></bean> <!-- set方法注入 --><bean id="teacher" class="com.lywgames.bean.Teacher"> <property name="id" value="901"></property><property name="name" value="xiaocui"></property></bean> <!-- 注入数组, list, set, map --><bean id="clazz" class="com.lywgames.bean.Clazz">  <property name="teacher" ref="teacher"></property><!-- 注入数组--><property name="clazzName"><list><value>计算机1班</value><value>三好班级</value></list></property><!-- 注入 list集合 --><property name="studentList"><list><ref bean="student"/><ref bean="student"/></list></property><!-- 注入set集合 --><property name="studentSet"><set><ref bean="student"/><ref bean="student"/></set></property><!-- 注入map集合 --><property name="studentMap"><map><entry key="801" value-ref="student"></entry><entry key="802" value-ref="student"></entry></map></property></bean>
</beans>

3.7. 运行项目

005_Spring的属性注入相关推荐

  1. Spring学习笔记(二)——Spring相关配置属性注入Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  2. Spring Boot系列四 Spring @Value 属性注入使用总结一

    @Value注入 不通过配置文件的注入属性的情况 通过@Value将外部的值动态注入到Bean中,使用的情况有: 注入普通字符串 注入操作系统属性 注入表达式结果 注入其他Bean属性:注入beanI ...

  3. 2.3.3 spring属性注入-注解注入-全注解-配置类扫描

    代码: spring2-属性注入-全注解-配置类扫描.zip - 蓝奏云文件大小:12.3 K|https://www.lanzouw.com/iPK5vvq21uf 这个博客,我们使用全注解的方式来 ...

  4. 2.3.2 spring属性注入-注解注入-半注解注入-后序

    代码: spring属性注入-注解注入-半注解后序.zip - 蓝奏云文件大小:15.2 K|https://www.lanzouw.com/iCjbVvpvxaf 上一个博客的半注解是,一个类在xm ...

  5. 2.3.1 spring属性注入-注解注入-半注解方式-前序

    注解注入自由度高,可以对部分类使用注解,也可以对所有类都使用注解. 下面代码是的Category使用xml定义java Bean, Product使用注解来定义java Bean 1.定义Catogo ...

  6. 2.2 Spring属性注入-构造方法

    代码: spring2.2-构造方法注入.zip - 蓝奏云文件大小:14.9 K|https://www.lanzouw.com/iLbBBvpug4b 1.定义Category和Product类, ...

  7. 2.1、spring属性注入-Set方法注入

    代码地址:spring2.1.zip - 蓝奏云文件大小:15.1 K|https://www.lanzouw.com/imlEwvptwre Set方法注入的原理是spring先通过指定id的类的无 ...

  8. druiddatasource配置_Springboot属性注入 Java配置和Value配置

    今天我们正式进入了SpringBoot入门实战系列的课程,第二个部分SpringBoot配置和日志管理,本期课程将会分享:1.springboot属性注入 - @Value(推荐);2.Springb ...

  9. Spring(三)——HelloSpring、IOC创建对象的方式、属性注入、自动装配、使用注解开发

    文章目录 1. 简介 2. IOC理论推导 3. HelloSpring 4. IOC创建对象的方式 4.1 使用无参构造创建对象(默认) 4.2 使用有参构造创建对象 5. Spring配置 5.1 ...

最新文章

  1. html5 填充下拉框,Html5添加实现Bootstrap下拉列表框鼠标滑过时打开的插件教程
  2. oracle 的启动与连接
  3. python3安装mysql模块_Python3.6 下 安装MySql
  4. px4原生源码学习一
  5. ShaderLab学习小结(一)最简化的顶点片断Shader
  6. android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......
  7. cte公用表表达式_SQL Server公用表表达式(CTE)
  8. 字符串存入xls matlab,数组 – MATLAB:将字符串写入Excel
  9. SecureCRT 6.7.0.153 汉化绿色版
  10. 台达伺服控制器接线图_【智】两种PLC台达B2伺服驱动器接线和参数设置详解
  11. laydate 在vue中使用_如何在vue-cli项目里用layer的layData日期组件(代码)
  12. 大气压力换算公式_大气压怎么算
  13. 基于单片机的心率监测系统设计(#0495)
  14. 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统
  15. Ebean报错java.lang.ClassCastException: com.project.model.xxx cannot be cast to com.project.model.xxx
  16. Vue packages version mismatch解决方案
  17. 学计算机选择什么编程语言好一些?
  18. rk3399 hdmi HDCP key烧录
  19. 洛谷P4099 [HEOI2013]SAO 题解
  20. 腾讯地图 省市区县 信息展示

热门文章

  1. jvm系列(十):如何优化Java GC「译」
  2. OS X快捷键小技巧
  3. iOS 选择的照片或者拍照的图片上添加日期水印
  4. 思科cisco解决方案:思科ACI解决方案和Nexus_9000交换机
  5. [LeetCode] Single Number 单独的数字
  6. 走向.NET架构设计—第三章—分层设计,初涉架构
  7. phpcms v9二次开发及使用中各种问题解决方案(一)
  8. dedecms调用自定义会员模型会员信息的方法
  9. IPv6的利与弊—Vecloud微云
  10. windows下编译jsoncpp 1.y.z