Spring的三种注入方式(Setter、构造函数和自动注入)
一、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 bean三种创建方式
spring共提供了三种实例化bean的方式:构造器实例化(全类名,反射).工厂方法(静态工厂实例化 动态工厂实例化)和FactoryBean ,下面一一详解: 1.构造器实例化 City.jav ...
- Spring事务-三种实现方式
一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- Spring MVC三种返回方式
spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. 下面一一进行说明: 1.ModelAndV ...
- spring ioc三种注入方式
spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容 ...
- Spring IOC 三种注入方式
1. 接口注入 2. setter注入 3. 构造器注入 对象与对象之间的关系可以简单的理解为对象之间的依赖关系:A类需要B类的一个实例来进行某些操作,比如在A类的方法中需要调用B类 ...
- Spring的三种通过XML实现DataSource注入方式
Spring的三种通过XML实现DataSource注入方式: 1.使用Spring自带的DriverManagerDataSource 2.使用DBCP连接池 3.使用Tomcat提供的JNDI
- Spring中三种配置Bean的方式
Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...
- 【转】Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...
- Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...
- (转)Spring的三种实例化Bean的方式
http://blog.csdn.net/yerenyuan_pku/article/details/52832793 Spring提供了三种实例化Bean的方式. 使用类构造器实例化. <be ...
随机推荐
- ECharts演习(一)
前几天小组讨论,窗外的麻雀在电线杆上多嘴,想想很有夏天的感觉,手中的铅笔在纸上来了又回,我用几行字形容孰是孰非......... Echarts使用指南 百度网站:http://echarts.bai ...
- Asp.net 生成静态页面
http://www.cnblogs.com/tonycall/archive/2009/07/18/1526079.html Asp.net 生成静态页面(简单用法) 第一次发表,有什么错误,请大家 ...
- Facebook 开源动画库 pop
官网:https://github.com/facebook/pop Demo: https://github.com/callmeed/pop-playground 一:pop的基本构成: POPP ...
- PyQt5教程——组件(7)
PyQt5中的组件(widgets) 组件(widgets)是构建一个应用的基础模块.PyQt5有广泛的各式各样的组件,包含按钮,复选按钮,滑块条,和列表框.在这个部分的教程中,我们将学习几种有用的组 ...
- java正则表达式简介
Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点) 1 英文句点符号:匹配单个任意字符. eg: 表达式”t.o 可以匹配:tno,t#o,teo等等.不可以匹配:tn ...
- 1z0-052 q209_11
11: Your database instance is started using the server parameter file (SPFILE). You executed a comma ...
- vue 渲染流程
1.DOM 节点树 高效的更新所有这些节点会是比较困难的,因为原生的DOM节点属性很多,渲染性能差. 2.虚拟 DOM “虚拟 DOM”是我们对由 Vue 组件树建立起来的整个 VNode 树的称呼. ...
- SPOJ 74. Divisor Summation 分解数字的因子
本题有两个难点: 1 大量的数据输入.没处理好就超时 - 这里使用buffer解决 2 因子分解的算法 a)暴力法超时 b)使用sieve(筛子),只是当中的算法逻辑也挺不easy搞对的. 数值N因子 ...
- sublime 格式化XML文件
下载插件 下载下来后将其解压到D:\tools\Sublime Text 3109\Data\Packages 打开sublime,preferences->browse packages,会弹 ...
- 通过Java发送邮件和接收邮件的工具类
一.第一种 使用SMTP协议发送电子邮件 第一步:加入mail.jar包 (1)简单类型 package com.souvc.mail; import java.util.Date; import j ...