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 ...
随机推荐
- SpringCloud实现集群和负载均衡
Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的. 组成部分 spingcloud的五大神兽 服务发现——Netflix Eureka ...
- [POI2015]LOG(树状数组)
今天考试考了这题,所以来贡献\([POI2015]LOG\)的第一篇题解.代码略丑,调了快三个小时才调出来\(AC\)代码. 对于这种小清新数据结构题,所以我觉得树状数组才是这道题的正确打开方式. 首 ...
- 防止sql注入的小函数 以及一些小验证
function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialch ...
- mybatis四大接口之 ParameterHandler
1. 继承结构 只有一个默认的实现类 2. ParameterHandler 获取参数对象: 设置参数对象: public interface ParameterHandler { Object g ...
- javascript 计算文件MD5 浏览器 javascript读取文件内容
原则上说,浏览器是一个不安全的环境.早期浏览器的内容是静态的,用户上网冲浪,一般就是拉取网页查看.后来,随着互联网的发展,浏览器提供了非常丰富的用户交互功能.从早期的表单交互,到现在的websocke ...
- Python-doc rst文件打开
Python rst文件打开 RST与Python类似Javadoc与Java. 如果下载了别人的Python源码,里面有rst文件夹,我们可以转为html后用浏览器打开 某个开源项目的index.r ...
- Python全局解释器锁 -- GIL
首先强调背景: 1.GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定. 2.每个CPU在同一时间只能 ...
- pycharm格式化代码 常用快捷键
ctrl+alt+L 一 常用快捷键 编辑类: Ctrl + D 复制选定的区域或行Ctrl + Y 删除选定的行Ctrl + Alt + L 代码 ...
- ActiveMQ配置高可用性的方式
当一个应用被部署于生产环境,灾备计划是非常重要的,以便从网络故障,硬件故障,软件故障或者电源故障中恢复.通过合理的配置ActiveMQ,可以解决上诉问题.最典型的配置方法是运行多个Broker,一旦某 ...
- Java 调用系统命令
ProcessBuilder import java.io.File; import java.io.IOException; import java.io.InputStream; import j ...