一 基于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.0.xsd">
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- more bean definitions go here... -->
</beans>
二 实例化容器:
Resource resource =new FileSystemResource("beans.xml"); BeanFactory factory=new XmlBeanFactory(resource);
Resource reource =new ClassPathResource("beans.xml"); BeanFactory factory=new XmlBeanFactory(resource);
ApplicationContext context=new ClassPathXmlApplicationContext (new String("applicationContext.xml","applicationContext-part2.xml"));
//of course,an applicationContext is just an beanFactory
BeanFactory factory=(BeanFactory)context;
三 组成基于XML配置的多种元数据:
两种方式:
[list]
(1)
将文件路径作为字符串数组传递给ApplicationContext构造器,如:
ClassPathXmlApplicationContext (new String("applicationContext.xml","applicationContext-part2.xml"));
(2)<import resource="..."/>方式
<beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
此处相对路径,斜杠可以忽略...
[/list]
四 多种bean:
在容器内部,这些bean定义由
BeanDefinition对象来表示,该定义将包含以下信息:
- 全限定类名:这通常就是已定义bean的实际实现类。如果通过调用static factory方法来实例化bean,而不是使用常规的构造器,那么类名称实际上就是工厂类的类名。
- bean行为的定义,即创建模式(prototype还是singleton)、自动装配模式、依赖检查模式、初始化以及销毁方法。这些定义将决定bean在容器中的行为用于创建
- bean实例的构造器参数及属性值。比如使用bean来定义连接池,可以通过属性或者构造参数指定连接数,以及连接池大小限制等。
- bean之间的关系,即协作 (或者称依赖)。
bean定义
[img]C:\Documents and Settings\Administrator\桌面\22.bmp[/img]
除了通过bean定义来描述要创建的指定bean的属性之外,某些BeanFactory的实现也允许 将那些非BeanFactory创建的、已有的用户对象注册到容器中,比如使用 DefaultListableBeanFactory的registerSingleton(..) 方法。不过大多数应用还是采用元数据定义为主。
BEAN的别名,两种方式:
<alias name="fromName" alias="toName"/>或
<bean id="bean2" alias="toName" class="..."/>
实例化BEAN
在极少数情况下,容器将调用类的静态工厂方法来创建bean实例,
class属性将用来指定 实际具有静态工厂方法的类(至于调用静态工厂
方法创建的对象类型是当前class还是其他 的class则无关紧要)。
用构造器来实例化
<bean id="exampleBean" class="examples.ExampleBean"/>
<bean name="anotherExample" class="examples.ExampleBeanTwo"/>
给构造函数指定参数以及为bean实例设置属性将在随后的部份中谈及。
使用静态工厂方法实例化
<bean id="exampleBean"
class="examples.ExampleBean2"
factory-method="createInstance"/>
给工厂方法指定参数以及为bean实例设置属性将在随后的部份中谈
使用实例工厂方法实例化
<!-- the factory bean, which contains a method called createInstance() -->
<bean id="myFactoryBean" class="...">
...
</bean>
<!-- the bean to be created via the factory bean -->
<bean id="exampleBean"
factory-bean="myFactoryBean"
factory-method="createInstance"/>
使用容器
InputStream is = new FileInputStream("beans.xml");
BeanFactory factory = new XmlBeanFactory(is);
BeanFactory提供的方法极其简单。它仅提供了六种方法供客户代码调用:
[list=1]
- boolean containsBean(String):如果BeanFactory包含给定名
称的bean定义 (或bean实例),则返回true
- Object getBean(String):返回以给定名字注册的bean实例。
根据bean的配置情况,如果为singleton模式将返回一个共享的实例,否则
将返回一个新建的实例。如果没有找到指定的bean,该方法可能会抛出
BeansException异常(实际上将抛出NoSuchBeanDefinitionException
异常),在对bean进行实例化和预处理时也可能抛出异常
- Object getBean(String, Class):返回以给定名称注册的bean实例,
并转换为给定class类型的实例,如果转换失败,相应的异常 (BeanNotOfRequiredTypeException)将被抛出。上面
的getBean(String)方法也适用该规则。
- Class getType(String name):返回给定名称的bean的Class。
如果没有找到指定的bean实例,则抛出NoSuchBeanDefinitionException异常。
- boolean isSingleton(String):判断给定名称的bean定义
或bean实例)是否为singleton模式(singleton将在bean的作用域中讨论)
如果bean没找到,则抛出NoSuchBeanDefinitionException异常。
- String[] getAliases(String):返回给定bean名称的所有别名。
分享到:
相关推荐
在本篇"Spring 学习笔记二"中,我们将深入探讨Spring框架的核心概念和技术细节,以便更好地理解和使用这个广泛应用于企业级Java开发的框架。Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
Spring学习笔记( spring视频笔记)
spring学习笔记
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
根据提供的压缩包文件名,我们可以推测这是一个逐步学习Spring的系列笔记。从"Spring_day1"开始,可能涵盖了Spring的基础概念、环境搭建和基本配置。"Spring_day2"可能涉及了依赖注入和AOP的深入讲解。"Spring_day3...
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
“Java Spring学习笔记”是一份宝贵的资源,专门为想要学习和掌握Java Spring框架的开发者而设计。这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用...
"尚学堂Spring学习笔记" 本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在...
Spring6学习笔记,师承老杜
Spring Cloud是一套微服务架构下的分布式系统解决方案,提供了在分布式系统环境下快速构建一些常见模式的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...
spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记...
Spring学习笔记.xmind