spring Ioc容器之使用XML配置Bean
1、项目截图

2、创建xml文件

3、打印机接口
package com.example.demo.computerTest;
public interface Printer {
void init();
void print(String txt);
}
4、彩色打印机
package com.example.demo.computerTest;
public class ColorPrinter implements Printer {
@Override
public void init() {
System.out.println("启动彩色打印机!");
}
@Override
public void print(String txt) {
System.out.println("打印彩色文字:".concat(txt));
}
}
5、电脑类
package com.example.demo.computerTest;
public class Computer {
String manu;
String type;
Printer p;
public String getManu() {
return manu;
}
public void setManu(String manu) {
this.manu = manu;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
//printTxt()方法接收一个参数给打印机的print()方法实现打印的功能
public void printTxt(String txt){
p.init();
p.print(txt);
}
public Printer getP() {
return p;
}
public void setP(Printer p) {
this.p = p;
}
}
6、测试类
说明:
通过ClassPathXmlApplicationContext载入XML文件
通过向context.getBean()方法中传入参数,获取具体的bean,这个参数就是XML文件中的id名;
通过实例对象p可以调用Computer类中的方法,可以获取配置文件中为Computer类属性设置的值。
package com.example.demo.computerTest;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class computerTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("computers.xml");
Computer p = (Computer)context.getBean("pc");
p.printTxt("Hello,spring!");
System.out.println(p.getManu());
System.out.println(p.getType());
}
}
7、xml配置
说明:
通过id属性给每个Bean设置id;
通过class属性设置Bean的位置
通过ref属性可以引用已经定义好的bean
通过property可以操作bean中的属性:
name属性指定bean中的某个属性
value为该属性设置指定的值
<?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-3.0.xsd">
<bean id="colorPrinter" class="com.example.demo.computerTest.ColorPrinter"/>
<bean id="pc" class="com.example.demo.computerTest.Computer">
<property name="manu">
<value>苹果</value>
</property>
<property name="type" value="IPad"/>
<property name="p" ref="colorPrinter"/>
</bean>
</beans>
8、效果:

1、测试类还可以是下面的代码
package com.example.demo.computerTest; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class computerTest {
public static void main(String[] args) {
//ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("computers.xml");
//Computer p = (Computer)context.getBean("pc");
//p.printTxt("Hello,spring!");
//System.out.println(p.getManu());
//System.out.println(p.getType()); ApplicationContext context = new ClassPathXmlApplicationContext("computers.xml");
Computer p = (Computer) context.getBean("pc");
p.printTxt("Hello,Spring!"); }
}
2、效果:

spring Ioc容器之使用XML配置Bean的更多相关文章
- Spring IOC机制之使用注解配置bean
一. 通过注解配置bean 1.1 概述 相对于XML方式而言,通过注解的方式配置bean更加简洁和优雅,而且和MVC组件化开发的理念十分契合,是开发中常用的使用方式. 1.2 ...
- 【spring源码学习】spring的IOC容器之自定义xml配置标签扩展namspaceHandler向IOC容器中注册bean
[spring以及第三方jar的案例]在spring中的aop相关配置的标签,线程池相关配置的标签,都是基于该种方式实现的.包括dubbo的配置标签都是基于该方式实现的.[一]原理 ===>sp ...
- spring-framework-中文文档一:IoC容器、介绍Spring IoC容器和bean
5. IoC容器 5.1介绍Spring IoC容器和bean 5.2容器概述 本章介绍Spring Framework实现控制反转(IoC)[1]原理.IoC也被称为依赖注入(DI).它是一个过程, ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)
一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...
- Spring IoC 容器和 bean 对象
程序的耦合性: 耦合性(Coupling),又叫耦合度,是对模块间关联程度的度量.耦合的强弱取决于模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少.模块间的耦合度是指模块之间的依赖关系,包 ...
- Spring IoC容器总结(未完)
在面向对象系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上.这些依赖关系可以通过把对象的依赖注入交给框架或IOC容器来完成,这种从具体对象手中交出控制的做法是非常有价 ...
- 学习Spring(一) 实例化Spring IoC容器
实例化Spring IoC容器 1,读取其配置来创建bean实例 2,然后从Spring IoC容器中得到可用的bean实例 Spring提供两种IoC容器实现类型 a,一种为bean工厂 b,应用程 ...
- Spring IOC 源码简单分析 02 - Bean Reference
### 准备 ## 目标 了解 bean reference 装配的流程 ##测试代码 gordon.study.spring.ioc.IOC02_BeanReference.java ioc02 ...
- Spring IOC 容器预启动流程源码探析
Spring IOC 容器预启动流程源码探析 在应用程序中,一般是通过创建ClassPathXmlApplicationContext或AnnotationConfigApplicationConte ...
随机推荐
- 前端学习之CSS
CSS介绍 CSS(Cascading Style Sheet, 层叠样式表)定义如何显示HTML元素, 给HTML设置样式, 让它更加美观. 当浏览器读到一个样式表, 它就会按照这个样式表来对文档进 ...
- ExtJs写本地ArrayStore,ComboBox调用
1.自定义本地ArrayStore var sCurStore = new Ext.data.ArrayStore({ //设备状态store fields: ["ckey", & ...
- git pull 撤销误操作
本来想把github上的release合并到本地的release分支上,由于没有查看当前分支,直接运用git pull origin v2.8.1,结果将release合并到了v2.8.1分支中. 解 ...
- java比较排序Comparable和Comparator
1 比较排序Comparable和Comparator 1.1 接口作用说明 Comparable和Comparator都是用来实现对象的比较.排序,对比时需要实现Compara ...
- python之做一个简易的翻译器(一)
平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 1.先找一下有哪些免费翻译的接口 百度了一下关键字“免费翻译接口”,然后找到 ...
- Go语言学习之11 日志收集系统kafka库实战
本节主要内容: 1. 日志收集系统设计2. 日志客户端开发 1. 项目背景 a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 b. 当系统机器比较少时,登陆到服务器上查看即可 ...
- Kotlin 随笔小计
最近准备学Kotlin 现在Kotlin也能支持IOS开发了,准备后面买个Mac也能进行IOS开发 当然目标还是看着能不能把一些小的Android项目重构下 也算是定个目标吧,由于沉迷吃鸡,日志都没怎 ...
- hbase的api操作之过滤器
Comparison Filter: 对比过滤器: 1.RowFilter select * from ns1:t1 where rowkey <= row100 ...
- Confluence 6 超过当前许可证期限进行升级
这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况. 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似 ...
- PAT 1124 Raffle for Weibo Followers
1124 Raffle for Weibo Followers (20 分) John got a full mark on PAT. He was so happy that he decide ...