全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

浅析Spring配置文件

Spring的配置文件概述

简介

Spring的配置文件是用于指导Spring工厂进行Bean生成、依赖关系注入及Bean示例分发的”图纸”,他是一个或多个标砖的XML文档,J2EE程序员必须学会灵活应用这份”图纸”,准确的表达自己的”生成意图”。

Spring配置文件的示例

Spring配置文件的一般结构

Spring容器高层视图

Spring容器启动基本条件:

Spring的框架类包

Bean的配置信息

Bean的元数据信息

Bean的实现类

Bean的属性信息

例如:数据源的用户名、密码

Bean的依赖关系

Spring根据依赖关系配置完成Bean之间的装配

Bean的行为配置

例如:生命周期范围、生命周期各个过程的回调函数

Bean的创建方式

说明Bean是通过构造器还是工厂方法来创建的

Bean的实现类

基于XML的配置

Spring的配置文件是基于XML格式的,Spring1.0的配置采用DTD格式,Spring2.0以后使用Schema的格式,后者让不同类型的配置拥有了自己的命名空间,是配置文件更具有扩展性。

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"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>
<aop:config>
<aop:pointcut expression="execution(* com.sale.service.*.*(..))" id="mycut"/>
</aop:config>
</beans>

xmlns="http://www.springframework.org/schema/beans":表示默认命空间,用于Spring Bean定

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance":表示xsi标准命名空间,用于指定自定义命名空间的schema文件

xmlns:aop="http://www.springframework.org/schema/aop":表示自定义命名空间,aop表示该命名空间的简称

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">:用于为每个命名空间指定具体的schema文件

<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>:为默认命名空间中的配置

<aop:config>

<aop:pointcut expression="execution(* com.sale.service.*.*(..))" id="mycut"/>

</aop:config>:为aop命名空间的配置

Schema文件的用途

Spring3.0的配置Schema文件分部在各模块类包中,如果模块拥有对应的Schema文件,则可以在模块类包中找到一个config目录,Schema文件就为与该目录中,如下是对这些Schema文件的用途:

示例说明:spring-aop-3.0.xsd

命名空间:http://www.springframework.org/schema/aop

Schema文件:http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

1. Spring-beans.xsd :用于配置Bean

2. Spring-aop-3.0.xsd :AOP配置

3. Spring-tx-3.0.xsd:声明式事务配置的Schema

4. Spring-mvc-3.0.xsd:3.0新增的

5. Spring-utils-3.0.xsd:简化某些复杂的标准配置

6. Spring-jee-3.0.xsd:是为简化jee中ejb和jndi等功能的配置

7. Spring-jdbc-3.0.xsd:是3.0新增的,配置Spring内接数据库提供的Schema

8. Spring-jms-3.0.xsd:jms的配置

9. Spring-lang-3.0.xsd:添加了对动态语言的支持,集成动态语言定义的

10. Spring-oxm-3.0.xsd:配置对象xml映射到Schema

11. Spring-task-3.0.xsd:任务调度的Schema

12. Spring-tool-3.0.xsd:集成的Spring有用工具而定义的Schema

Spring Bean的命名

每个Bean可以有一个或多个id,我们把第一个id成为”标识符”,其余id叫做id别名,这些id在IoC容器中必须唯一。

Bean id的命名方式

配置全限定类名,唯一

<bean class="com.sale.entity.SaleProduct" ></bean>

指定id,唯一

<bean  id="saleProduct"class="com.sale.entity.SaleProduct" ></bean>

指定name,唯一

<bean name="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

指定id和name,唯一

<beanid="saleProduct"name="saleProduct"class="com.sale.entity.SaleProduct" ></bean>

指定多个name,唯一

<bean name="bean1;alias1;alias2" class="com.sale.entity.SaleProduct" ></bean>

指定多个id,唯一

<bean id="bean1;alias1;alias2" class="com.sale.entity.SaleProduct" ></bean>

指定别名,唯一

<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>
<alias name="saleProduct" alias="alias1"/>

Bean id的命名约定

1、遵循xml命名规范

2、由字母,数字,下划线组成

3、驼峰式,第一个单词首字母小写,从第二个但是开始第首字母大写

Spring Bean的实例化

Spring IoC容器是如何实例化Bean呢?传统应用程序可以通过 new和反射方式进行实例化Bean。二Spring IoC容器则需要根据Bean定义的配置元数据使用反射机制来创建Bean。

Spring IoC容器创建Bean示例的方式

使用构造器实例化Bean

默认构造

<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

必须存在无参数的构造

有参构造

<bean id="saleProduct" class="com.sale.entity.SaleProduct" >
<constructor-arg name="prodName" value="哈哈" ></constructor-arg>
</bean>

必须存有参数的构造

使用静态工厂实例化Bean

必须的class属性,factory-method属性指定实例化Bean的方法,而且使用静态工厂方法也允许指定方法参数,Spring IoC容器将调用此属性指定的方法来获取Bean

<bean factory-method="newInstance" id="saleProduct" class="com.sale.entity.SaleProduct" >
<constructor-arg index="0" value="Hello" ></constructor-arg>
</bean>

使用实例工厂方法实例化Bean

不能指定class属性,factory-bean来指定工厂Bean,factory-method指定实例化Bean的方法,而且使用实例工厂方法也允许指定参数

<!-- 定义实例工厂Bean -->
<bean id="saleProduct1" class="com.sale.entity.SaleProduct" ></bean>
<!-- 使用实例工厂Bean -->
<bean id="saleProduct2" factory-bean="saleProduct1" >
<constructor-arg index="0" value="Hello" ></constructor-arg>
</bean>

Spring Bean的作用域

Spring Bean中所说的作用域,在配置文件中即是”scope”。早面向对象程序设计中一般指对象或变量之间的可见范围。而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求范围。

Spring Bean的作用域类型

Singleton

Spring IoC容器中仅存在一个Bean的实例,Bean以单利方式存在,单实例模式是最重要的设置模式之一,在Spring中对此实现了超越,可以对那些非线程安全的对象采用单例模式(一般使用在DAO层)

<bean scope="singleton" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

prototype

每次从容器中调用Bean时,都会返回一个全新的实例,即每次调用getBea()时,相当于执行new Bean()的操作。在默认情况下,Spring容器在启动时不实例化propotype的Bean。

<bean scope="prototype" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

当用于使用Spring的WebApplicationConext时,还可以使用另外三种Bean的作用域,即request,session和globleSession。在使用Web应用环境相关的Bean作用域时,必须在Web容器中进行一些额外的配置

低版本web容器配置:

<filter>
 <filter-name>requestContextFilter</filter-name>
 <filter-class>org.springframework.web.RequestConextFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>requestContextFilter</filter-name>
 <servlet-name>/*</servlet-name>
</filter-mapping>

高版本的Web容器配置:

<listener>
 <listener-class>
org.springframework.web.context.request.RequestConextLinstener
 </listener-class>
</listener>

request

发起一次http请求的时候Spring会创建一个全新实例

<bean scope="request" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

Session

当前会话

<bean scope="Session" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

Global session

httpSession会话

<bean scope="Global session" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

自定义作用域

在spring 2.0中,Spring的Bean作用域机制是可以扩展的,这意味着,不仅可以使用Spring提供的预定义Bean作用域,还可以定义自己的作用域,甚至重启定义现有的作用域(不提倡这么做,而且不能覆盖内置的sinleton和prototype作用域)

实现自定义Scope类:

Org.springframework.bean.factory.config.scope

注册自定义Scope类:

ConfigurableBeanFactory.registerScope(String scopeName,Scope scope)

使用自定义的Scope:

Scope customScope = new ThreadScope();
beanFactory.registerScope(“thread”,customScope);
<bean id=”***” class=”***” scope=”scopeName”>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# Spring  # 配置文件  # 读取spring配置文件的方法(spring读取资源文件)  # Spring中多配置文件及引用其他bean的方式  # SpringBoot获取yml和properties配置文件的内容  # springboot如何读取配置文件(application.yml)中的属性值  # 详解Spring Boot加载properties和yml配置文件  # 监听器获取Spring配置文件的方法  # Java中spring读取配置文件的几种方法示例  # 深入理解Spring Boot属性配置文件  # 详解spring applicationContext.xml 配置文件  # Spring加载加密的配置文件详解  # 自定义  # 多个  # 自己的  # 还可以  # 第一个  # 方法来  # 包中  # 首字母  # 最重要  # 下划线  # 而在  # 可以通过  # 第二个  # 这份  # 三种  # 可以使用  # 这么做  # 即是  # 在一 


相关文章: 网站制作模板下载什么软件,ppt模板免费下载网站?  怀化网站制作公司,怀化新生儿上户网上办理流程?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  焦点电影公司作品,电影焦点结局是什么?  专业网站建设制作报价,网页设计制作要考什么证?  建站之星图片链接生成指南:自助建站与智能设计教程  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何在西部数码注册域名并快速搭建网站?  建站之星后台管理:高效配置与模板优化提升用户体验  已有域名能否直接搭建网站?  高端网站建设与定制开发一站式解决方案 中企动力  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何通过网站建站时间优化SEO与用户体验?  大同网页,大同瑞慈医院官网?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  常州自助建站工具推荐:低成本搭建与模板选择技巧  如何选购建站域名与空间?自助平台全解析  C++用Dijkstra(迪杰斯特拉)算法求最短路径  seo网站制作优化,网站SEO优化步骤有哪些?  如何基于云服务器快速搭建个人网站?  平台云上自助建站如何快速打造专业网站?  常州企业建站如何选择最佳模板?  如何零成本快速生成个人自助网站?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在Windows环境下新建FTP站点并设置权限?  如何挑选优质建站一级代理提升网站排名?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  如何选择PHP开源工具快速搭建网站?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  香港服务器租用每月最低只需15元?  个人网站制作流程图片大全,个人网站如何注销?  如何通过西部数码建站助手快速创建专业网站?  教程网站设计制作软件,怎么创建自己的一个网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何在宝塔面板中创建新站点?  如何在建站之星绑定自定义域名?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  制作网页的网站有哪些,电脑上怎么做网页?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  b2c电商网站制作流程,b2c水平综合的电商平台?  韩国服务器如何优化跨境访问实现高效连接?  如何快速登录WAP自助建站平台?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  建站主机系统SEO优化与智能配置核心关键词操作指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。