浅析Spring配置文件
发布时间 - 2026-01-10 22:44:57 点击率:次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加载加密的配置文件详解
# 自定义
# 多个
# 自己的
# 还可以
# 第一个
# 方法来
# 包中
# 首字母
# 最重要
# 下划线
# 而在
# 可以通过
# 第二个
# 这份
# 三种
# 可以使用
# 这么做
# 即是
# 在一
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
深圳网站制作平台,深圳市做网站好的公司有哪些?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
再谈Python中的字符串与字符编码(推荐)
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何快速上传建站程序避免常见错误?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
如何快速生成高效建站系统源代码?
用yum安装MySQLdb模块的步骤方法
独立制作一个网站多少钱,建立网站需要花多少钱?
详解阿里云nginx服务器多站点的配置
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
如何快速搭建高效可靠的建站解决方案?
如何挑选优质建站一级代理提升网站排名?
简单实现Android验证码
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel如何升级到最新版本?(升级指南和步骤)
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
教你用AI将一段旋律扩展成一首完整的曲子
Android实现代码画虚线边框背景效果
js代码实现下拉菜单【推荐】
网站制作软件免费下载安装,有哪些免费下载的软件网站?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
如何快速配置高效服务器建站软件?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Laravel如何实现API版本控制_Laravel版本化API设计方案
如何快速启动建站代理加盟业务?
微信小程序 配置文件详细介绍
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
网站制作报价单模板图片,小松挖机官方网站报价?
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
微信小程序 scroll-view组件实现列表页实例代码
如何快速搭建高效服务器建站系统?

