20171208-学习日记

本文详细介绍了Spring框架中Bean的配置方式,包括配置文件的基本结构、Bean的实例化方法、作用域设置等内容,并提供了多种实例化Bean的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring的配置文件是用于指导Spring工程进行Bean的生产、依赖关系注入及Bean实例分发的“图纸”,它是一个或多个标准的XML文档


Spring配置文件一般结构:
<beans>
<import resource="resource.xml" />
<bean id="bean1" class="***"></bean>
<bean name="bean2" class="***"></bean>
<alias alias="bean3" name="bean2" /> (alias用于写bean的别名)
</beans>


Spring容器启动基本条件:
1.Spring的框架类包
2.Bean的配置信息
3.Bean的实现类


Bean的元数据信息:
1.Bean的实现类
2.Bean的属性信息
3.Bean的依赖关系
4.Bean的行为配置
5.Bean的创建方式


Schema文件用途:
Spring-beans-3.0.xsd 最主要的,配置bean
Spring-aop-3.0.xsd aop配置定义的schema
Spring-tx-3.0.xsd 声明式事务配置定义Schema
Spring-mvc-3.0.xsd 新增的,mvc配置的Schema
Spring-util-3.0.xsd 是为简化某些复杂的标准配置而提供的Schema
Spring-jee-3.0.xsd 是为简化jee中一些功能的配置而提供的Schema
Spring-jdbc-3.0.xsd 新增的,配置内接数据库而提供的Schema
Spring-jms-3.0.xsd jms配置的Schema
Spring-lang-3.0.xsd 为集成动态语言而定义的
Spring-oxm-3.0.xsd 新增的,配置对象xml映射到Schema
Spring-task-3.0.xsd 主要用于任务调度的Schema
Spring-tool-3.0.xsd 集成Spring一些有用工具而定义的Schema


Spring Bean的命名:
每个Bean可以有一个或多个id,第一个id称为“标识符”,其余id叫“别名”,这些id在IOC容器中必须唯一

Bean id的命名方式:
1. 配置全限定类名,唯一
2.指定id,唯一
3.指定name,唯一
4.指定id和name,唯一
5.指定多个name,唯一
6.指定别名,唯一

Bean id的命名约定:
1.遵循xml命名规范
2.由字幕,数字,下划线组成
3.驼峰式,第二个单词及以后的单词的首个单词字母大写


创建Bean实例的方法:
使用构造器实例化Bean
使用静态工厂方法实例化Bean
使用实例工厂方法实例化Bean

构造器实例化:
最简单的方式,Spring IOC容器既能使用默认空构造器,也能使用有参数构造器两种方式创建Bean
1.空构造器实例化:

<bean id="helloServiceNoWithArgs" class="com.***.HelloWorldImpl" />


2.有参数构造器实例化:
<bean id="helloServiceWithArgs" class="com.***.HelloWorldImpl">
<constructor-arg index="0" value="Hello Spring!" />
</bean>


3.静态工厂实例化:
<bean id="helloServiceStaticFactory" class="com.***.HelloWorldStaticFactory" factory-method="newInstance">
<constructor-arg index="0" value="Hello Static Factory!" />
</bean>


4.实例工厂实例化:

<!-- 定义实例工厂Bean -->
<bean id="beanInstanceFactory" class="com.***.HelloWorldInstanceFactory" />
<!-- 使用实例工厂Bean创建Bean -->
<bean id="helloWorldInstance" factory-bean="beanInstanceFactory" factory-method="newInstance">
<constructor-arg index="0" value="Hello Instance Factory!" />
</bean>


Spring Bean的作用域:
配置文件中“scope”属性,在面向对象程序设计中一般指对象或变量之间的可见范围


Bean的作用域类型与配置:
singleton:<bean id="userInfo" class="com.***.UserInfo" scope="singleton"></bean> 无状态的bean使用
prototype:<bean id="userInfo" class="com.***.UserInfo" scope="prototype"></bean> 有状态的bean使用
request:<bean id="userInfo" class="com.***.UserInfo" scope="request"></bean> 针对每一次的HTTP的请求
session:<bean id="userInfo" class="com.***.UserInfo" scope="session"></bean> 针对某个HTTP session来起作用
global session:<bean id="userInfo" class="com.***.UserInfo" scope="globalSession"></bean> 类似于标准的HTTP session作用域,有局限性


自定义作用域:
实现自定义Scope类:org.springframework.beans.factory.config.Scope
注册自定义Scope类:ConfigurableBeanFactory.registerScope(String scopeName, Scope scope)
使用自定义的Scope:

Scope customScope = new ThreadScope();
beanFactory.registerScope("thread", customeScope);
<bean id="***" class="***" scope="scopeName" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值