Spring——IOC(依赖注入)的三种方式
Spring——IOC(依赖注入)的三种方式
依赖注入的三种方式(注入的底层是通过反射实现的)
第一种:set方式的依赖注入
applicationContext.xml
id:bean的唯一标识符
class:是实体的包类名
property:name是实体类的属性名;value指的是属性值
<bean id="teacher" class="com.dt.entity.Teacher"><property name="name" value="zs"></property><property name="age" value="23"></property>
</bean><bean id="course" class="com.dt.entity.Course"><property name="courseName" value="java"></property><property name="courseHour" value="100"></property><property name="teacher" ref="teacher"></property>
</bean>
Teacher.java
package com.dt.entity;public class Teacher {private String name;private int age;public Teacher() {}public Teacher(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
Course.java
package com.dt.entity;public class Course {private String courseName;private int courseHour;private Teacher teacher;//授课老师;依赖于Teacher类public Course() {}public Course(String courseName, int courseHour, Teacher teacher) {super();this.courseName = courseName;this.courseHour = courseHour;this.teacher = teacher;}public String getCourseName() {return courseName;}public void setCourseName(String courseName) {this.courseName = courseName;}public int getCourseHour() {return courseHour;}public void setCourseHour(int courseHour) {this.courseHour = courseHour;}public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}//打印课程信息public void showInfo(){System.out.println(this.courseName+"," + this.courseHour+","+this.teacher.getName());}}
Tset.java
package com.dt.test;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.dt.entity.Course;
import com.dt.entity.Student;public class test {public static void main(String[] args) {testDI();}public static void testDI(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Course course= (Course)context.getBean("course");course.showInfo();}}
第二种,构造器(构造方法注入)
通过构造方法赋值:
constructor-arg和构造方法的参数顺序一致,若是不一致,可以通过name或index(索引)或type(类型)指定参数
<bean id="teacher" class="com.dt.entity.Teacher" ><constructor-arg value="李四"></constructor-arg><constructor-arg value="24"></constructor-arg>
</bean><bean id="course" class="com.dt.entity.Course"><constructor-arg value="c"></constructor-arg><constructor-arg value="100"></constructor-arg><constructor-arg ref="teacher"></constructor-arg>
</bean>
其他测试类和实体类不变
第三种,p命令空间赋值
1、引入p命名空间:xmlns:p=""
2、简单类型为p:属性名="属性值"
引用类型:p:属性名-ref="引用的id"
<bean id="teacher" class="com.dt.entity.Teacher" p:age="25" p:name="王五">
<bean id="course" class="com.dt.entity.Course" p:courseHour="300" p:courseName="hadoop" p:teacher-ref="teacher">
其他类不变
个人学习心得,希望能帮助到你们,一起学习吧=.=!!!也可以去b站看颜群老师的视频讲解,挺好的
最新文章
- 互联网金融裸奔时代 信息安全如何保障?
- Java之AQS
- Linux之jkd、tomcat、mysql安装
- 数据库主键到底是用自增长(INT)好还是UUID好?
- 【软件安全:软件安全技术课后习题及答案】
- Java后端学习路线图
- Font
- C++中的fstreamifstreamofstream和MFC中的CFileCStdioFile
- 微信小程序滚动Tab选项卡:左右滑动切换、触底加载分页
- Spring
- 三维偏序cdq分治
- 反爬虫原理与绕过实战
- SwingMVC设计模式
- UML入门1:事物和事物关系简介
- 判断升序
- 伪装物体检测
- C语言结构体详解(结构体定义,使用,结构体大小等)
- Redis 集群搭建及集群管理工具
- 视频的编码方式
- 锁(Locks)