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

public class Student {   //学生实体类

    private  String   name;  //姓名
private Integer age; //年龄
private Grade grade; //年级 @Override
public 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; //年级名称 @Override
public 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/beans
http://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 {

    @Test
public 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; //年级 @Override
public 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/beans
http://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; //年级 @Override
public 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/beans
http://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.测试代码不动  直接运行看效果

最新文章

  1. p/invoke碎片--对数组的封送处理
  2. SQL 数据库 子查询、主外键
  3. EF中的那些批量操作
  4. Qt之自定义界面(添加自定义标题栏)
  5. maven 简单实用教程
  6. poj 1564 Sum It Up【dfs+去重】
  7. C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用
  8. Mac下eclipse导入其他工程中文注释出现乱码解决方案
  9. EL与JSTL
  10. Python——pyqt5——消息框(QMessageBox)
  11. SpringBoot整合使用JdbcTemplate
  12. 【GDOI2016模拟3.15】基因合成(回文串+性质+DP)
  13. Xcode工程编译错误之iOS开发之The Xcode build system has crashed. Please close and reopen your workspace
  14. 认识jQuery
  15. Python shelve 模块
  16. Reading | 《TensorFlow:实战Google深度学习框架》
  17. Linux下DHCP服务安装配置
  18. VUE的语法笔记
  19. set集合的遍历(基于迭代器和增强for循环,没有一般的for循环)
  20. 集合(一)ArrayList

热门文章

  1. POJ 1155 树形背包(DP) TELE
  2. (转载)小课堂UI-Star Diamond Tutorial
  3. ajax+XMLHttpRequest里的FormData实现图片异步上传
  4. 初涉JavaScript模式 (4) : 构造函数
  5. jquery工具函数browser() 辨别浏览器
  6. HDU1465 第六周L题(错排组合数)
  7. 查看 yum 安装软件包的路径
  8. 习题二:string数组应用
  9. python处理mysql慢查询日志
  10. CSS中.和#区别