Spring的三种注入方式(Setter、构造函数和自动注入)
来源:互联网 发布:人工智能取代的职业 编辑:程序博客网 时间:2024/05/14 06:42
一、Setter注入
这里我是希望在Student.java中调用Course.java中的内容。
public class Course {
public String name = "数学";}
Course类很简单只是定义了一个name并赋值了"数学"。
public class Student {
//Student就是注入的目的地,Course是被注入的对象
//想要在Student中使用Course类
private Course course;
//如何注入简单类型
private int age;
private String name;
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
//setter方式注入一定要生成set方法
public void setCourse(Course course) {
this.course = course;
}
public void shangke (){
System.out.println(age+"岁学生"+name+"正在上"+course.name+"课");
}
}
这是Student类,创建了一个Course类,并生成了set方法
以上步骤完成之后就是怎么把这两者关联起来了
这就要在配置文件中applicationContext.xml文件中配置相应的bean了
<bean id="course" class="com.niit.DI.Course"></bean>
<bean id="student" class="com.niit.DI.Student">
<!-- 以下代码跟Student类中的set方法相关 -->
<!-- name就写Student中被注入变量的名称 -->
<!-- ref代表spring会按照course为模板去new一个course并赋值到course中 -->
<property name="course" ref="course" ></property>
<property name="age" value="20"></property>
<property name="name" value="biu"></property>
</bean>
这样一个简单的set方式注入就完成了!
二、构造函数注入
为了方便操作,这里我们依旧使用Course类作为注入的对象。往Teacher类中注入
Course类。
public class Teacher {
//也要在Teacher类里面访问Course类
private Course course;
private int age;
private String name;
//使用构造函数
public Teacher(Course course,int age,String name){
this.course = course;
this.age = age;
this.name = name;
}
public void shangke(){
System.out.println("老师正在给"+age+"岁的"+name+"上"+course.name+"课");
}
}
这是Teacher类中的内容这里使用了一个构造函数Teacher。
配置文件中的内容实现注入
<bean id="teacher" class="com.niit.DI2.Teacher">
<!-- 构造函数方式注入的时候必须配置构造函数的参数 -->
<constructor-arg name="course" ref="course"></constructor-arg>
<constructor-arg name="age" value="20"></constructor-arg>
<constructor-arg name="name" value="liu"></constructor-arg>
</bean>
是不是很简单,一下就完成后了!
三、自动注入
依旧使用Course类,这次是要把Course丢给Person类。
自动注入的时候使用Set方法和构造函数的方法都行,看个人喜好了,官方是更推荐构造函数的方法来进行注入的。这里使用的是setter方式注入
public class Person {
Course course;
public void setCourse(Course course) {
this.course = course;
}
public void shangke(){
System.out.println("有人正在上"+course.name+"课");
}
}
配置文件中的配置
<!-- 自动注入 -->
<bean id="course" class="com.niit.DI.Course"></bean>
<bean id="person" class="com.niit.DI3.Person" autowire="byName"> </bean>
这里的autowire属性稍微做下笔记
byName 从配置文件中查找跟被注入属性名称相同的been
byType 按照被注入属性的类型从配置文件中查找跟被注入属性相同的类型
注意:返回多个会异常
default
constructor 按照构造函数参数的方法去查找
三种注入的方式全部完成了是不是觉得很简单!
- Spring的三种注入方式(Setter、构造函数和自动注入)
- spring Ioc 依赖注入的三种方式:构造函数注入、setter方法注入和接口注入
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
- Spring的注入方式Setter和构造器
- Spring——setter方式注入和构造函数方式注入
- Spring的两种常见的注入方式 构造方法注入以及setter方法注入
- Spring的两种依赖注入方式:setter方法注入与构造方法注入
- Spring DI依赖注入setter,构造,注解,三种依赖方式的总结
- Spring的setter注入和构造器注入
- Spring 框架中 Setter 注入 和 构造器注入 方式的区别 与优劣
- Spring的两种依赖注入方式:setter方法注入与构造方法注入 以及两种方式的区别!
- Spring定义bean的三种方式和自动注入
- Spring定义bean的三种方式和自动注入
- 函数返回值—返回局部变量
- struts property输出unicode解决办法
- 前端分页例子
- Python2和Python3中@abstractmethod的用法
- Python开发简单爬虫
- Spring的三种注入方式(Setter、构造函数和自动注入)
- js常用事件
- JS操作JSON总结
- 研究:Liferay研究(二)开发Liferay中几个常用的标签
- Leetcode003. Longest Substring Without Repeating Characters
- Java时间日期格式转换
- 随系统字体放大,某个View内容显示不全问题怎么修改?
- 改变=方法+坚持
- HTML中的实体字符