系列教程


1. 定义Bean

在xml配置文件中(如"beans.xml"),添加Bean定义:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 定义一个Bean -->
<bean id="..." class="...">
<!-- bean 配置 -->
</bean> <!-- App bean -->
<bean id="app" class="App" lazy-init="true"></bean> </beans>

可以给Bean设置一些属性,此处用到的属性说明:

  • id: bean的唯一标识符
  • class: 指定bean的Java类名称
  • lazy-init: 懒加载,让Spring容器在Bean首次用到时创建Bean实例,而不是在应用一启动就创建

2. 创建Spring容器

Spring容器负责加载bean配置文件、创建bean。

前面教程提到过有2种容器:

  • ApplicationContext
  • BeanFactory

ApplicationContext基于BeanFactory,比BeanFactory功能更强,更常用。

BeanFactory 容器

BeanFactory容器是简单的IOC容器,只提供基本的依赖注入支持。BeanFactory本身是一个Java接口,最常见的实现是XmlBeanFactory类。通常不直接使用BeanFactory容器,而是用ApplicationContext 容器。

ApplicationContext 容器

ApplicationContext容器是更高级更常用的容器,继承并扩展了BeanFactory的功能。同样ApplicationContext本身是一个Java接口,常用的实现类是:

  • FileSystemXmlApplicationContext: 通过文件路径加载bean的xml配置文件
  • ClassPathXmlApplicationContext: 通过类路径加载bean的xml配置文件
  • WebXmlApplicationContext: 通过web网址加载bean的xml配置文件

代码示例:


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test {
public static void main(String[] args) {
// ApplicationContext容器加载beans.xml
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
}
}

3. 通过Spring容器获取bean

通过Spring容器可以访问它所管理的任意Bean,可使用getBean()方法返回Bean实例。

示例:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test {
public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); // 获取Bean实例
App app = context.getBean("app", App.class);
// App app = (App) context.getBean("app");
}
}

4. 关闭容器

最后应用结束时需要关闭容器,释放资源,容器中的所有bean也将被销毁。


context.close(); // 如果当前context类没有close方法,需类型转换为有close方法的类,如下所示
// ((ClassPathXmlApplicationContext) context).close();
// ((ConfigurableApplicationContext) context).close();

Bean XML 配置(1)- 通过XML配置加载Bean的更多相关文章

  1. Bean 注解(Annotation)配置(1)- 通过注解加载Bean

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  2. web.xml的contextConfigLocation作用及自动加载applicationContext.xml

    web.xml的contextConfigLocation作用及自动加载applicationContext.xml 转自:http://blog.csdn.net/sapphire_aling/ar ...

  3. nginx缓存静态资源,只需几个配置提升10倍页面加载速度

    nginx缓存静态资源,只需几个配置提升10倍页面加载速度 首先我们看图说话 这是在没有缓存的情况下,这个页面发送了很多静态资源的请求:   1.png 可以看到,静态资源占用了整个页面加载用时的90 ...

  4. maven工程中防止mapper.xml文件被漏掉、未加载的方法

    maven工程中防止mapper.xml文件被漏掉.未加载的方法 就是在pom.xml文件中添加以下内容 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉. --&g ...

  5. Android在layout xml中使用ViewStub完成动态加载

    Android在layout xml中使用ViewStub完成动态加载 一.Layout XML文件常见的两种模块加载方式 1.静态加载:被加载的模块和其它模块加载的时间一样. <include ...

  6. Android在layout xml中使用include完成静态加载

    Android在layout xml中使用include完成静态加载 include静态加载:不仅可以加载布局,还可以加载控件(控件标签名要在最外层)include标签中有个layout属性就是专门用 ...

  7. AutoCAD配置的Heidi驱动程序未加载

    电脑安装的软件越来越多,有的软件也就偶尔使用一下下,于是就找了一个绿化版的AutoCAD,挺好的,可启动时弹出"配置的Heidi驱动程序未加载.切换到默认软件驱动程序". 对于上述 ...

  8. 本地修改配置hosts文件解决Github加载慢问题

    本地修改配置hosts文件解决Github加载慢问题 手动方式 hosts 文件在每个系统的位置不一,详情如下: Windows 系统:C:\Windows\System32\drivers\etc\ ...

  9. spring加载bean流程解析

    spring作为目前我们开发的基础框架,每天的开发工作基本和他形影不离,作为管理bean的最经典.优秀的框架,它的复杂程度往往令人望而却步.不过作为朝夕相处的框架,我们必须得明白一个问题就是sprin ...

随机推荐

  1. 浅谈Windows入侵检查

    1 准备工作   检查人员应该可以物理接触可疑的系统.因为黑客可能侦测到你可以在检查系统,例如网络监听,所以物理接触会比远程控制更好. 为了当做法庭证据可能需要将硬盘做实体备份.如果需要,断开所有与可 ...

  2. 启动kafka报错

    启动kafka时 报错: kafka-console-consumer.sh --from-beginning --zookeeper node01:8121,node02:8121,node03:8 ...

  3. 前端Cannot read property 'disabled' of null 问题解决

    就是在项目中,控制台一直在报这个错,一直没找到是什么问题, 后来经过一番排查,发现是 因为在页面中使用了el-dropdown,但是在这个标签里面没有设置它的子元素,所以会报错,解决的方法就是在el- ...

  4. bitcoin01

    bitcoin, blockchain 本文只是初步表面认识比特币的笔记... 详细信息请看相关链接. 比特币除了耗电,耗硬盘存储空间,还有无法预测,无法控制的风险. 1. Satoshi_Nakam ...

  5. 联想电脑硬盘保护系统EDU8.0.1iso安装

    管理306机房4年了,15年我带领的第一批学生参加吉林省职业院校技能大赛的时候,领导把这个机房交给我负责.那个时候这个机房的机器是全校的顶配,30台DELL16G内存,2T硬盘,I7处理器,后面是6组 ...

  6. 嵊州普及Day3T4

      利内罗女士准备来到意大利进行修行.意大利由 n 个城市和 m 条道路构成,道路是双向的.到达第 i 个城市时,她可以取得该城市的全部信仰,并获得 ai 点能力提升,但因为在一个城市可以取得的信仰有 ...

  7. fiddler抓取URL之过滤设置

    Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 只要是开启了fiddler,我们的 ...

  8. docker-jenkins SSH Publishers时踩的坑

    source相对路径问题,不是 /var/jenkins_home/workspace/build-renren/target/renren-fast.war  或环境变量,而是  target/re ...

  9. Ternsorflow 学习:005-MNIST入门 实现模型

    前言 在上一讲中,我们通过分析选用了softmax模型,并用tf创建之.本讲的内容就是为了训练这个模型以便于测试. 训练模型 为了训练我们的模型,我们首先需要定义一个指标来评估这个模型是好的.其实,在 ...

  10. metasploit练习

    复现ms08_067_netapi 使用模块 msf5 > use exploit/windows/smb/ms08_067_netapi 查看配置 msf5 exploit(windows/s ...