首页 > 代码库 > spring02IOC
spring02IOC
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="http://www.mamicode.com/小马"/> <constructor-arg index="1" value="http://www.mamicode.com/50"/> <constructor-arg index="2" ref="grade"/> --> <!--002.按照参数的顺序 必须和参数顺序 一致 <constructor-arg value="http://www.mamicode.com/小马1"/> <constructor-arg value="http://www.mamicode.com/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.测试代码不变直接运行查看效果
spring02IOC
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。