1.创建所需要的Student 和 Grade实体类

public class Student {   //学生实体类private  String   name;  //姓名private  Integer  age;  //年龄private  Grade   grade;  //年级
    @Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", grade=" + grade+ "]";}public Student() {super();}public Student(String name, Integer age) {super();this.name = name;this.age = age;}public String getName() {return name;}//  set()  DI 依赖注入public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Grade getGrade() {return grade;}public void setGrade(Grade grade) {this.grade = grade;}}

public class Grade {   //年级实体类private String  name;  //年级名称
@Overridepublic String toString() {return "Grade [name=" + name + "]";}public Grade() {super();}public Grade(String name) {super();this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

2.创建对应的applicationContext.xml文件 方法项目中的src目录下

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置Grade 类的bean  01.设值注入  保证类中有属性对应的set()即可 --><bean id="grade" class="cn.bdqn.bean.Grade"><!-- name的属性值  默认使用DI 查询类中的setName() --><property name="name" value="1年级"/></bean><!--  配置学生Bean   实例化学生对象   默认执行的是无参构造 --><bean id="student" class="cn.bdqn.bean.Student"><property name="name" value="小马"/><property name="age" value="50"/><!-- 对类中的域属性  赋值  使用ref --><property name="grade" ref="grade"/></bean>
</beans>

3.创建对应的测试类

public class StudentTest {@Testpublic  void  test01(){ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");/** 获取容器给我们创建的Student对象   ioc的体现*  本身由自身创建对象的过程,把创建对象的权利移交给了spring容器!  IOC  控制反转* * 之前 Student student=new Student();* 现在context.getBean("student");* context容器来创建对象了* */Student student=(Student) context.getBean("student");System.out.println(student);}
}

4.运行查看效果

5.修改Student类中的代码 为了验证 使用构造注入的时候可以省略set、get以及无参构造方法

public class Student {   //学生实体类private  String   name;  //姓名private  Integer  age;  //年龄private  Grade   grade;  //年级
    @Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", grade=" + grade+ "]";}//带参构造public Student(String name, Integer age, Grade grade) {super();this.name = name;this.age = age;this.grade = grade;}}

6.修改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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置Grade 类的bean --><bean id="grade" class="cn.bdqn.bean.Grade"><!-- name的属性值  默认使用DI 查询类中的setName() --><property name="name" value="1年级"/></bean><!-- 02.构造注入    调用带参构造来创建对象的实例保证类中有相应的带参构造    set()和无参构造 都可以 消失了...  --><bean id="student" class="cn.bdqn.bean.Student"><!-- 001.使用参数下标<constructor-arg  index="0" value="小马"/><constructor-arg  index="1" value="50"/><constructor-arg  index="2" ref="grade"/> --><!--002.按照参数的顺序   必须和参数顺序 一致 <constructor-arg   value="小马1"/><constructor-arg   value="501"/><constructor-arg   ref="grade"/> --><!--003.使用构造参数名称 不是全局变量      进行注入   推荐使用 --><constructor-arg  name="name" value="小马2"/><constructor-arg  name="age"  value="502"/><constructor-arg  name="grade" ref="grade"/></bean></beans>

7.测试代码不变直接运行查看效果

8.使用p命名空间注入  修改Student实体类,因为p注入需要对应的set()和无参构造器

public class Student {   //学生实体类private  String   name;  //姓名private  Integer  age;  //年龄private  Grade   grade;  //年级@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", grade=" + grade+ "]";}// p 注入的时候需要public Student() {super();}//带参构造public Student(String name, Integer age, Grade grade) {super();this.name = name;this.age = age;this.grade = grade;}//p 必须要有set()public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Grade getGrade() {return grade;}public void setGrade(Grade grade) {this.grade = grade;}}

Student实体类

9.修改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"xmlns:p="http://www.springframework.org/schema/p"  xmlns:c="http://www.springframework.org/schema/c"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置Grade 类的bean --><bean id="grade" class="cn.bdqn.bean.Grade"><!-- name的属性值  默认使用DI 查询类中的setName() --><property name="name" value="1年级"/></bean><!-- 03.使用p命名空间注入   必须有set()和 无参构造函数 <bean id="student" class="cn.bdqn.bean.Student" p:name="小马哥" p:age="50" p:grade-ref="grade"/>--><!-- 04.使用c命名空间注入 必须要有对应的带参构造  --><bean id="student" class="cn.bdqn.bean.Student" c:name="小马哥" c:age="50" c:grade-ref="grade"/>
</beans>

applicationContext.xml

10.测试代码不动  直接运行看效果

转载于:https://www.cnblogs.com/xtdxs/p/7097144.html

spring02IOC相关推荐

最新文章

  1. SQL Server 中print Datetime类型问题
  2. 2.1.2 数据通信基础知识
  3. 网络情况不稳定 无法连接服务器,提示网络正常无法连接服务器
  4. 磁珠与电感的区别,看了就灰常明白了
  5. misc高阶 攻防世界_攻防世界 Misc 进阶题(一)
  6. webpack 配置详解
  7. php cdi_Quarkus的其他(非标准)CDI功能
  8. Docker学习五:Docker 数据管理
  9. 初中节点法分析电路_有关初中物理电路分析题的一些小技巧
  10. centos 搭建web平台
  11. 【语音识别】之梅尔频率倒谱系数(mfcc)及Python实现
  12. cpu顶盖怎么看步进_拆解报告|360AI音箱,深度硬件解析,带你看懂360智能音箱内部...
  13. ASP.NET 页面双向静态化
  14. Quartus II 安装
  15. 他是“自由软件”之父,天才程序员,史上最伟大的黑客!最后却黯然离场
  16. 性能监控与服务器监控
  17. 【LAMP 基于 Red Hat Linux 7】
  18. flutter需要定义product flavors
  19. 软件开发模型/原型法/瀑布模型/螺旋模型
  20. PHP简易商城(一)概述

热门文章

  1. VB 提取TextBox 文本框中指定一行字符串
  2. vb中line的用法[转]
  3. 首个月球旅客!SpaceX将送普通人上太空,马斯克暗示首单来自日本
  4. 用FBI通缉犯照片集,考验亚马逊人脸识别,意外发现了隐情
  5. 随手刷屏的波士顿动力机器人,用3D打印解决了哪些问题
  6. 在前端团队的那些日子(初见)
  7. 08Vue.js快速入门-Vue综合实战项目
  8. 使用MATLAB贝叶斯工具箱(BNT),进行吉布斯采样(Gibbs Sampling)之前需要做的编译工作...
  9. FarPoint表格数字框中小数点位数的设置
  10. Ubuntu打印机控制命令笔记