Java Spring学习笔记----Bean的依赖注入(设值注入方式)1
Spring常用的两种依赖注入方式:一种是设值注入方式,利用Bean的setter方法设置Bean的属性值;另一种是构造注入,通过给Bean的构造方法传递参数来实现Bean的属性赋值;
1、设值注入方式
直接上代码例子,示例的树结构图如下

Shape.java接口内容
package chapter3;
public interface Shape {
public double area();//求形状的面积
}
Circle.java内容:
package chapter3;
public class Circle implements Shape {
double r;
public double getR(){
return this.r;
}
public void setR(double r){
this.r=r;
}
@Override
public double area() {
// TODO Auto-generated method stub
return Math.PI*Math.pow(r, );
}
}
Rectangle.java内容
package chapter3;
public class Rectangle implements Shape {
double width,height;
public double getWidth(){
return this.width;
}
public void setWidth(double width){
this.width=width;
}
public double getHeight(){
return this.height;
}
public void setHeight(double height){
this.height=height;
}
@Override
public double area() {
// TODO Auto-generated method stub
return width*height;
}
}
AnyShape.java内容
package chapter3;
public class AnyShape {
Shape shape;
public void setShape(Shape shape) {this.shape=shape;}
public Shape getShape(){return this.shape;}
public void outputArea(){
System.out.println("面积="+shape.area());
}
}
Test.java内容
package chapter3; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.*; public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context=new FileSystemXmlApplicationContext("src/myContext.xml");
AnyShape shape=(AnyShape)context.getBean("anyShape");
shape.outputArea(); AnyShape shape2=(AnyShape)context.getBean("anyShape2");
shape2.outputArea();
} }
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-2.5.xsd"> <bean id="myShape" class="chapter3.Circle">
<property name="R">
<value>2.5</value>
</property>
</bean> <bean id="myShape2" class="chapter3.Rectangle">
<property name="height">
<value></value>
</property>
<property name="width">
<value></value>
</property>
</bean> <bean id="anyShape" class="chapter3.AnyShape">
<property name="shape">
<ref bean="myShape"/>
</property>
</bean> <bean id="anyShape2" class="chapter3.AnyShape">
<property name="shape">
<ref bean="myShape2"/>
</property>
</bean> </beans>
在配置文件中,每个Bean的id属性定义Bean的标识。查找和引用Bean是通过该标识进行的。Bean的class属性顶了Bean对应的类和路径名称。通过Bean的子元素property实现属性值的设置,它是通过调用相应属性的setter方法实现属性值的注入。标识为“anyshape”的Bean在设置shape的属性时通过<ref/>标签引用了标识为“myshape”的bean,也就是shape属性由标识为“myshape”的Bean决定的。
Java Spring学习笔记----Bean的依赖注入(设值注入方式)1的更多相关文章
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- Spring学习笔记-DI(依赖注入)
构造器注入(见前贴) Set注入[重点] 依赖注入:Set注入 依赖:bean对象的创建依赖于容器 注入:bean对象的所有属性由容器来注入 [环境搭建] 复杂类型 // Class Address ...
- [跟我学spring学习笔记][DI循环依赖]
循环依赖 什么是循环依赖? 循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方. Spring容器循环依赖包括构造器循环依赖和setter循环依赖,那Spring容器如何解决循环依赖呢? ...
- Spring 学习笔记 Bean的作用域
在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域.作用域将对Bean的生命周期和创建方式产生影响.在低版本的Spring中,仅有两个作用域 ...
- Spring学习笔记-Bean
Bean作用域(Bean Scope) singleton[单例模式][默认]:全局唯一 <!--显式设置单例模式--> <bean id="accountService& ...
- Spring 学习笔记---Bean的生命周期
生命周期图解 由于Bean的生命周期经历的阶段比较多,我们将通过一个图形化的方式进行描述.下图描述了BeanFactory中Bean生命周期的完整过程: Bean 的生命周期从Spring容器着手实例 ...
- Android(java)学习笔记213:开源框架post和get方式提交数据(qq登录案例)
1.前面提到Http的get/post方式 . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2.Android应用会经常使用http协议进行传输,网上会有很完善 ...
- Android(java)学习笔记156:开源框架post和get方式提交数据(qq登录案例)
1. 前面提到Http的get/post方式 . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2. Android应用会经常使用http协议进行传输,网上会有很 ...
- Android(java)学习笔记191:Android数据存储5种方式总结
1.使用文件(File)存储 存储一般的数据 2.使用sharedperference(xml) 存储设置信息.配置信息.密码 3.数据库Sqlite 开源的,嵌入式的数据库,轻量级 4.使用Cont ...
随机推荐
- 「PKUSC2018」真实排名(排列组合,数学)
前言 为什么随机跳题会跳到这种题目啊? Solution 我们发现可以把这个东西分情况讨论: 1.这个点没有加倍 这一段相同的可以看成一个点,然后后面的都可以. 这一段看成一个点,然后前面的不能对他造 ...
- 自定义SpringBoot控制台输出的图案
pringboot启动的时候,控制台输出的图案叫banner banner?啥玩意儿?相信有些人,一定是一脸懵逼... ——这个就不陌生了吧,这个是我们启动springboot的时候,控制台输出的.. ...
- Java Listener中Spring接口注入的使用
在项目中使用Spring通常使用他的依赖注入可以很好的处理,接口与实现类之间的耦合性,但是通常的应用场景中都是Service层和DAO层,或者web层的话, 也是与Strust2来整合,那么如何在Li ...
- Swift5 语言参考(九) 泛型和参数
本章介绍泛型类型,函数和初始值设定项的参数和参数.声明泛型类型,函数,下标或初始化程序时,可以指定泛型类型,函数或初始化程序可以使用的类型参数.当创建泛型类型的实例或调用泛型函数或初始化程序时,这些类 ...
- spring mvc 使用kaptcha配置生成验证码实例
SpringMVC整合kaptcha(验证码功能) 一.依赖 <dependency> <groupId>com.github.penggle</groupId> ...
- 锐捷客户端下虚拟机VMware无法联网的问题
打开VMware,选择右下角的网络适配器,设置为NAT模式. 如果还不能上网,则打开电脑的任务管理器,保证VMwate的服务保持开启. 但是锐捷客户端,会自动检测并且关闭VMware NAT Serv ...
- WIN10安装scrapy/channels等不成功的解决方式
问题 在Win10机器上,不管是安装scrapy还是channels,都需要安装一个包,叫做twisted.正是这个twisted,导致出现一系列的奇葩错误,让我一度以为我的Pycharm坏了,还改了 ...
- webstorm无法显示左边文件夹目录的解决方法
webstorm无法显示左边文件夹目录的解决方法 方法一 view-->Tool Windows-->Project 就可以显示或者关闭 方法二 1.删除webstorm的配置文件夹 2. ...
- storm_分组策略
注意1:原始的案例 spout 和bolt都是1个并发 所以文件中30条日志 从spout发出以后 bolt接受到30条
- logstash使用template提前设置好maping同步mysql数据到Elasticsearch5.5.2
上篇blog说到采用logstash-input-jdbc将mysql数据同步到ES(http://www.cnblogs.com/jstarseven/p/7704893.html),但是这里有一个 ...