`
happiness0617
  • 浏览: 5870 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring学习(三)---Spring容器的高级主题

阅读更多
一 Spring容器技术内幕

1 内部工作机制



对于这个IOC流水线,其实没必要了解太过详细,大概知道Spring从加载配置文件到创建一个完整Bean的大概流程就可以。如果需要详细了解spring的内部实现,可以参考Spring源码解析。我过段时间也会去看看那本书。

2.BeanDefinition
  org,soringframework.beans.factory.config.BeanDefinition是配置文件<bean>元素标签在容器中内部表示形式。一般情况下,BeanDefinition只在容器启动时加载并解析,除非容器刷新或重启,这些信息不回发生变化,当然如果用户有特殊的需求,也可以通过编程的方式运行期调整BeanDefinition的定义。
  创建最终的BeanDefinition主要包括两个步骤
  • 1.利用BeanDefinition对配置信息Resource进行读取,通过XML解析器解析配置信息的DOM对象,简单的为每个<bean>生成对应的BeanDefinition对象。但是这里生成的BeanDefinition可能是半成品,因为在配置文件中,我们可能通过占位符变量引用外部属性文件的属性,这些占位符变量在这一步还没有被解析出来
  • 利用容器中注册的BeanFactoryPostProcessor对半成品的BeanDefinition进行加工处理,将以占位符表示的配置解析为最终的实际值,这样半成品的BeanDefinition就为成品的BeanDefinition。


3.InstantiationStrategy
org.springframework.beans.factory.support.InstantiationStrategy负责根据BeanDefinition对象创建一个Bean实例。Spring之所以实例化Bean的工作通过一个策略接口进行藐视,是为了方便可以采用不同的实例化策略,以便满足不同的应用需求。

4.BeanWrapper
org.springframework.beansBeanWrapper是Spring框架中重要的组件类。BeanWrapper相当于一个代理器,Spring通过BeanWrapper完成Bean属性的填充工作。在bean实例被InstantiationStrategy创建出来之后,容器主控制程序将bean实例通过BeanWrapper包装起来。
 

二,属性编辑器
  在Spring配置文件里,我们往往通过字面值为Bean各种类型的属性提供设置值:不管是double类型还是int类型,在配置文件中都对弈字符创类型的字面值。BeanWrapper填充Bean属性一定有一个转换器在其中起作用,这个转换器就是属性编辑器。
  PropertyEditor是JavaBean规范定义的接口。

三 使用外部属性文件
简单实例
<!-- 引入jdbc.properties-属性文件-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
 p:location="classpath:com/baobaobao/placeholder/jdbc.properties"
 p:fileEncoding="utf-8"/>
<!-- 通过属性名引用属性值 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close"
  p:driverClassName="${driverClassName}"
  p:url="${url}"
  p:username="${username}"
  p:password="${password}"/>


PeopertyPlaceholderCOnfigurer其他属性
 
  • location:如果只有一个属性文件,直接使用location属性指定就可以了,如果是多个属性文件,则可以通过locations属性进行设置,可以向配置List一样配置locations。
  • fileEncoding:属性文件的编码格式,Spring使用操作系统默认编码读取属性文件,如果属性文件采用了特殊编码,需要通过该属性显式指定。
  • order:如果配置文件中定义了多个PropertyPlaceholderConfigurer,则通过该属性指定有限顺序。
  • placeholderPrefix:在上面的例子中,么通过${属性名}引用属性文件中的属性项,其中"${"为默认的占位符前缀,可以根据需要改为其他的前缀符。
  • placeholderSuffix:占位符后缀,默认为"}"
  • 大小: 119.1 KB
0
1
分享到:
评论

相关推荐

    spring-framework-5.0.0.RELEASE-dist.zip

    开发者可以通过阅读这些文档快速上手,并深入学习Spring的高级特性,如依赖注入、AOP(面向切面编程)、数据访问、Web应用、测试等。 2. **libs文件夹**: 这个文件夹包含了Spring框架所需的jar包,这些jar包涵盖...

    spring-framework-1.0-with-dependencies.zip

    IoC使得对象的创建和管理由Spring容器负责,而不是由代码直接创建,这样降低了组件之间的耦合度。AOP则允许开发者定义“切面”,将关注点如日志、事务管理等与业务逻辑分离,提高了代码的可维护性和可复用性。 该...

    官方原版完整包 spring-framework-5.3.2.RELEASE.zip

    这些文档涵盖了从基本概念到高级特性的所有内容,是学习和使用Spring不可或缺的资源。 “spring-5.3.2-schema.zip”文件则包含了Spring配置文件的XML Schema定义,这些定义帮助开发者更好地理解和编写符合规范的...

    spring-instrument-tomcat源码

    通过在Tomcat的类加载器上注册`LoadTimeWeaver`,Spring可以在应用部署时动态地插入额外的字节码,实现诸如事务管理、缓存控制等高级功能。 Tomcat本身是一个流行的开源Java Servlet容器,它负责加载并运行Web应用...

    spring-framework-2.5.6jar包

    同时,BeanFactory和ApplicationContext接口是Spring容器的基石,它们管理着对象的生命周期和依赖关系。 其次,Spring的AOP(面向切面编程)在2.5.6版本中也得到支持。AOP允许开发者定义"切面",即跨越多个对象的...

    spring-framework-5.2.0.RELEASE-master.zip

    总之,这个压缩包是学习Spring框架源码的宝贵资源,无论你是想要了解Spring的基本工作原理,还是想深入研究其高级特性,都能从中受益匪浅。通过阅读和分析源码,开发者能够更有效地利用Spring框架,设计出更高效、更...

    spring-framework-5.0.1.RELEASE官方完整包加官方文档

    《Spring Framework 5.0.1.RELEASE:官方完整包与文档详解》 Spring Framework作为Java开发中的核心框架...无论你是初学者还是经验丰富的开发者,Spring Framework 5.0.1.RELEASE都值得你投入时间和精力去学习和探索。

    spring-boot-reference中文版

    自动配置是Spring Boot的一大亮点,它根据项目中的依赖自动设置Spring容器的配置,极大地减少了手动配置的工作量。起步依赖则通过"starters" pom文件帮助开发者快速引入所需的依赖,例如"data-jpa" starter用于JPA...

    spring-dm-osgi整合jar包

    总之,Spring DM与OSGi的整合是Java企业级应用开发中的高级主题,它允许开发者构建模块化、可维护和可扩展的应用程序。通过使用`lib`压缩包中的jar文件,开发者可以搭建一个支持Spring DM的OSGi环境,实现更高效、...

    官方原版源码spring-framework-4.3.25.RELEASE.zip

    - **Core Container**:核心容器包括Beans和Context模块,是整个Spring框架的基础。Beans模块实现了DI,而Context模块则提供了更高级的上下文,可以管理Bean并与其他服务进行交互。 - **Data Access/Integration**...

    spring-framework-4.0.3.RELEASE官方完整包

    - **模块化设计**:Spring Framework 4.0.3.RELEASE的核心组件包括Core Container(核心容器)、Data Access/Integration(数据访问/集成)、Web(Web层)、AOP(面向切面编程)、Instruments(工具)和Messaging...

    官方原版spring-framework-5.0.4.RELEASE.rar

    1. **模块化设计**:Spring Framework 分为多个模块,包括核心容器(Core Container)、数据访问/集成(Data Access/Integration)、Web、AOP(面向切面编程)、工具(Tools)以及消息(Messaging)。这种模块化设计...

    spring源码spring-framework-4.3.2.RELEASE

    通过对Spring 4.3.2.RELEASE源码的深入研究,我们可以了解其设计理念,学习到如何优雅地管理依赖、实现面向切面编程,以及如何利用Spring构建高效、健壮的Web应用。同时,源码阅读也能帮助我们理解Spring如何与其他...

    spring-framework-4.2.4.RELEASE.rar

    Spring源码是学习框架设计思想和Java高级技术的好资料。通过阅读源码,可以深入了解依赖注入、AOP、事件驱动等方面的实现。 7. **文档**: 完整的文档包括用户指南、参考手册和API文档,有助于快速上手和深入理解...

    官方原版源码spring-framework-5.1.13.RELEASE.zip

    - **spring-framework-5.1.13.RELEASE-schema.zip**:这个文件包含Spring框架的XML配置文件的架构定义,这对于理解如何通过XML配置来驱动Spring容器的行为至关重要。 4. **关键模块解析** - **Core Container**...

    spring-boot-reference.pdf

    - **学习 Spring Boot 的特性**: 包括自动配置、健康检查、指标监控等。 - **迁移到生产环境**: 如何优化应用以适应生产环境。 - **高级主题**: 包括安全性、性能调优、云原生支持等。 #### 八、结论与后续阅读 - ...

    spring-mybatis-spring-1.3.2.tar.gz

    在本项目中,Spring作为容器,管理着所有Bean的生命周期,通过XML配置文件或Java配置类来定义Bean的创建、初始化、销毁等过程。同时,Spring MVC作为其Web层组件,处理HTTP请求,实现业务逻辑和视图的解耦。 二、...

    spring-framework-4.3.30.RELEASE-schema.zip

    Spring MVC通过DispatcherServlet进行请求分发,并支持多种视图技术如JSP、Thymeleaf等,同时具备数据绑定、异常处理等高级特性。 接着,"beans"子目录代表了Spring的IoC(Inversion of Control,控制反转)容器,...

    spring-data-hadoop-1.0.0源码包

    例如,`HadoopConfigUtils`类负责解析和加载Hadoop的配置文件,`HadoopConfigurationBeanFactoryPostProcessor`则用于在Spring容器启动时处理Hadoop配置。 2. **数据访问接口**:Spring Data Hadoop定义了一系列的...

Global site tag (gtag.js) - Google Analytics