<context:property-placeholder location="classpath:test.properties"/>
<bean id=""
class=""
autowire="byType|byName|constructor(针对所有属性全部自动装配)"
abstract="true该Bean被当做模板而不是实例"
depends-on="前置依赖Bean"
scope="singleton|prototype|request|session默认singleton即单例"
factory-method="指定静态/实例工厂方法的名称"
factory-bean="拥有工厂方法的实例Bean">
<!-- 按索引匹配入参 -->
<constructor-arg index="0" value="宝马"/>
<!-- 按类型匹配入参 -->
<constructor-arg type="java.lang.String" value="宝马"/>
<property name="car" value="宝马"/>
<property name="service" ref="SEService"/
<null name="name"/>
</bean>
1、可以使用util schema集合标签定义独立的集合Bean。
2、p命名空间
3、PropertyPlaceholderConfigurer从properties文件来加载值,java代码中通过${变量名}来引用properties信息,而properties通过${属性名}来引用java中的属性
4、Spring表达式语音,简称SpEL,是一个支持运行时查询、操作对象图的强大的表达式语言,#{.......},可以实现:
通过bean的id对bean进行引用、调用方法及属性、计算表达式的值、正则表达式匹配
<property name="count" value="#{5}">
<property name="name" value="#{'Jam'}"/>
<property name="prefix" value="#{prefixGenerator}"/>配置Bean与prefix属性之间的关系
<property name="suffix" value="#{prefixGenerator.suffix}"/>属性
<property name="suff" value="#{prefixGenerator.getSuff().toUpperCase()}"/>调用其他方法及链式操作
<property name="count" value="#{counter.total + 24}"/>
<property name="count" value="#{counter.total / cunter.size}"/>
<property name="result" value="#{coutner.total == 100 }"/>
<property name="result" value="#{counter.total == 100 and counter.size == 10 }"/>
<property name="result" value="#{counter.total == 100 ? 100:counter.total }"/>
<property name="pi" value="#{T(java.lang.Math).PI}">通过T()调用一个类的静态方法,首先用T()返回一个Class然后再调用相应的静态方法或静态属性
5、Bean的生命周期方法
通过构造器或工厂方法创建Bean实例
为Bean的属性设置值以及对其他Bean的引用
调用Bean的初始化方法,可通过init-method属性配置,这里注意后置处理器BeanPostProcessor接口
使用Bean
当容器关闭时调用Bean的销毁方法,可通过destroy-method属性配置,这里注意后置处理器BeanPostProcessor接口
6、Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean即FactoryBean(注意factory-method属性)
工厂Bean跟普通Bean不同在于其需要实现FactoryBean接口且返回的对象不是指定类的一个实例,而是返回该工厂Bean的getObject方法锁返回的对象。
<bean id=""
class=""
autowire="byType|byName|constructor(针对所有属性全部自动装配)"
abstract="true该Bean被当做模板而不是实例"
depends-on="前置依赖Bean"
scope="singleton|prototype|request|session默认singleton即单例"
factory-method="指定静态/实例工厂方法的名称"
factory-bean="拥有工厂方法的实例Bean">
<!-- 按索引匹配入参 -->
<constructor-arg index="0" value="宝马"/>
<!-- 按类型匹配入参 -->
<constructor-arg type="java.lang.String" value="宝马"/>
<property name="car" value="宝马"/>
<property name="service" ref="SEService"/
<null name="name"/>
</bean>
1、可以使用util schema集合标签定义独立的集合Bean。
2、p命名空间
3、PropertyPlaceholderConfigurer从properties文件来加载值,java代码中通过${变量名}来引用properties信息,而properties通过${属性名}来引用java中的属性
4、Spring表达式语音,简称SpEL,是一个支持运行时查询、操作对象图的强大的表达式语言,#{.......},可以实现:
通过bean的id对bean进行引用、调用方法及属性、计算表达式的值、正则表达式匹配
<property name="count" value="#{5}">
<property name="name" value="#{'Jam'}"/>
<property name="prefix" value="#{prefixGenerator}"/>配置Bean与prefix属性之间的关系
<property name="suffix" value="#{prefixGenerator.suffix}"/>属性
<property name="suff" value="#{prefixGenerator.getSuff().toUpperCase()}"/>调用其他方法及链式操作
<property name="count" value="#{counter.total + 24}"/>
<property name="count" value="#{counter.total / cunter.size}"/>
<property name="result" value="#{coutner.total == 100 }"/>
<property name="result" value="#{counter.total == 100 and counter.size == 10 }"/>
<property name="result" value="#{counter.total == 100 ? 100:counter.total }"/>
<property name="pi" value="#{T(java.lang.Math).PI}">通过T()调用一个类的静态方法,首先用T()返回一个Class然后再调用相应的静态方法或静态属性
5、Bean的生命周期方法
通过构造器或工厂方法创建Bean实例
为Bean的属性设置值以及对其他Bean的引用
调用Bean的初始化方法,可通过init-method属性配置,这里注意后置处理器BeanPostProcessor接口
使用Bean
当容器关闭时调用Bean的销毁方法,可通过destroy-method属性配置,这里注意后置处理器BeanPostProcessor接口
6、Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean即FactoryBean(注意factory-method属性)
工厂Bean跟普通Bean不同在于其需要实现FactoryBean接口且返回的对象不是指定类的一个实例,而是返回该工厂Bean的getObject方法锁返回的对象。