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的更多相关文章

  1. Spring IOC机制之使用注解配置bean

    一. 通过注解配置bean 1.1       概述 相对于XML方式而言,通过注解的方式配置bean更加简洁和优雅,而且和MVC组件化开发的理念十分契合,是开发中常用的使用方式. 1.2       ...

  2. 【spring源码学习】spring的IOC容器之自定义xml配置标签扩展namspaceHandler向IOC容器中注册bean

    [spring以及第三方jar的案例]在spring中的aop相关配置的标签,线程池相关配置的标签,都是基于该种方式实现的.包括dubbo的配置标签都是基于该方式实现的.[一]原理 ===>sp ...

  3. spring-framework-中文文档一:IoC容器、介绍Spring IoC容器和bean

    5. IoC容器 5.1介绍Spring IoC容器和bean 5.2容器概述 本章介绍Spring Framework实现控制反转(IoC)[1]原理.IoC也被称为依赖注入(DI).它是一个过程, ...

  4. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)

    一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...

  5. Spring IoC 容器和 bean 对象

    程序的耦合性: 耦合性(Coupling),又叫耦合度,是对模块间关联程度的度量.耦合的强弱取决于模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少.模块间的耦合度是指模块之间的依赖关系,包 ...

  6. Spring IoC容器总结(未完)

    在面向对象系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上.这些依赖关系可以通过把对象的依赖注入交给框架或IOC容器来完成,这种从具体对象手中交出控制的做法是非常有价 ...

  7. 学习Spring(一) 实例化Spring IoC容器

    实例化Spring IoC容器 1,读取其配置来创建bean实例 2,然后从Spring IoC容器中得到可用的bean实例 Spring提供两种IoC容器实现类型 a,一种为bean工厂 b,应用程 ...

  8. Spring IOC 源码简单分析 02 - Bean Reference

    ### 准备 ## 目标 了解 bean reference 装配的流程 ##测试代码 gordon.study.spring.ioc.IOC02_BeanReference.java   ioc02 ...

  9. Spring IOC 容器预启动流程源码探析

    Spring IOC 容器预启动流程源码探析 在应用程序中,一般是通过创建ClassPathXmlApplicationContext或AnnotationConfigApplicationConte ...

随机推荐

  1. CSRF、XSS、clickjacking、SQL 的攻击与防御

    CSRF攻击 原理: 跨站请求伪造.是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 网站通过cookie来实现登录功能.而cookie只要存在浏览器中,那么浏览器在访问含有这 ...

  2. 前端基础面试题(JS部分)

    1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined.Null.Boolean.Number.String 值类型:数值.布尔值.null.und ...

  3. 使用C#创建Windows服务 并发布Windows 服务

    一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二.创建Windows Servic ...

  4. String 、Stringbuilder和StringBuffer的区别

    JAVA平台提供了三个类:String.StringBuilder和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个S ...

  5. clojure开发环境配置git, vscode+Calva插件配置

    万事开头难,全是犄角旮旯的细节. 1 安装lein 参见 https://www.cnblogs.com/xuanmanstein/p/10504401.html 2 创建工程 lein 参考http ...

  6. conda命令简单使用

    Anaconda是一种Python语言的免费增值开源发行版,用于进行大规模数据处理.预测分析,和科学计算,致力于简化包的管理和部署.Anaconda使用软件包管理系统Conda进行包管理. 1.查看系 ...

  7. 客户端与服务器之间通信收不到信息——readLine()

    写服务器端和客户端之间通信,结果一直读取不到信息,在https://blog.csdn.net/yiluxiangqian7715/article/details/50173573 上找到了原因:使用 ...

  8. mysql5.7版本tar包手动安装---redhat7.0

    1.官网下载安装包,删除系统自带的mariadb,查到几个包,卸载几个包,总之得删除干净 [root@localhost Desktop]# yum list | grep mariadb maria ...

  9. Mac OS X 绑定80端口,不装nginx的小技巧

    Mac OS X 因为要绑定80端口需要ROOT权限, 但是如果用root权限启动eclipse或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法删除. 为此, 我们可以通过pfc ...

  10. boost第 4 章 事件处理

    http://zh.highscore.de/cpp/boost/ 1.信号 Signals 2.一旦对象 被销毁,连接就会自动释放. 让 FF类继承自 boost::signals::trackab ...