您的位置:首页 > 编程语言 > Java开发

spring 配置文件属性

2015-08-05 16:43 621 查看
首先 bean 属性内容:scope 属性是干吗用的?spring中 beanfactory或者 applicationContext 取得的实例 被默认为singleton,也就是默认每一个bean名称维持一个实例。scope=singleton 是默认值,通过设置scope=prototype 每次指定名称取得bean时 都会产生一个新得实例。singleton="true"
factory-method: bean的实例化中 ,默认情况下调用的是 类的默认构造方法,即无参数的构造方法。
例如
<bean  id='test' class='dxm.com.test.TestUser'>     这种方式采用的是默认的构造方法,构造TestUser对象
<bean  id='test' class='dxm.com.test.TestUser'   factory-method=‘CreateUser’>     这种方式采用的是CreateUser 方法,构造TestUser对象
init-method:   bean 对象得初始化方法名称
destroy-method:  bean 对象的销毁方法名称
如果所有对象都有相同的 初始化名称,或者销毁名称 ,则可以再 <beans> 上定义 default-init-method="init"    default-destroy-method="destroy"
lazy-init="default" :
lazy-init<beans><bean id="service1" type="bean路径" lazy-init="true"/><bean id="service2" type="bean路径" lazy-init="false"><property name="service1" ref="service1"/></bean></beans>以上两个bean,一个lazy-init属性为true,一个为false,由什么区别呢当 IoC容器启动时,service2会实例化,而service1则不会;但是但容器实例化service2时,service1也被实例化了,为什么呢,因为service2需要它。也就是说lazy-init="true"的bean,IoC容器启动时不会实例化该bean,只有当容器需要用到时才实例化它。lazy-init有利于容器效率,对于不需要的bean可以先不管。
abstract="true"<bean id="baseTxService"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true">……</bean>bean abstract="true"时,该bean不会被实例化,上面的bean是个模板
default-lazy-init="true": spring的容器是提供了lazy-load的,即默认的缺省设置是bean没有lazy-load,该属性处于false状态,这样导致spring在启动过程导致在启动时候,会默认加载整个对象实例图,从初始化ACTION配置、到service配置到dao配置、乃至到数据库连接、事务等等。
这么庞大的规模,难怪spring的启动时间要花将近1分钟。尝试了一下,把beans的default-lazy-init改为true就,再次启动,速度从原来的55秒,降到8秒钟!!Great!虽然是非常小一个改动,但是影响确实非常大。
这样做只是为了在开发过程中节约启动时间,在部署到实际环境中,倒是没必要设置default-lazy-init为true。毕竟部署到实际环境中不是经常的事,每次启动1分钟倒不是大问题,而且可以提高服务器效率。
parent="TestUser" :表示继承,继承父类的设置
depends-on="TestUser": 在实例化bean之前 如果依赖于另一个bean ,那么spring就会先去实例化被依赖的bean 并进行依赖注入,如果某个bean在生成之前要求另外一个bean先被实例,则可以指定depends-on 属性来设置 ,如果有两个以上的bean 要设置在depends-on中 用逗号隔开。
l例如:<bean id="service1" type="bean路径"   depends-on="TestUser"/>
autowire="byType": 表示属性内容自动绑定,根据属性类型来绑定默认值
autowire="autodetect"
autowire="constructor"
dependency-check="default": 检查某些依赖关系是否确立。
dependency-check="simple"
dependency-check="objects"
dependency-check="all"
dependency-check="none" :  none 是默认值
首先 bean 属性内容:scope 属性是干吗用的?spring中 beanfactory或者 applicationContext 取得的实例 被默认为singleton,也就是默认每一个bean名称维持一个实例。scope=singleton 是默认值,通过设置scope=prototype 每次指定名称取得bean时 都会产生一个新得实例。singleton="true"
可以利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,		避免struts中Action的线程安全问题。这句话怎么理解呢如果用单例方式会有什么样的结果呢???
spring 默认scope 是单例模式这样只会创建一个Action对象,每次访问都是同一个Action对象,数据不安全struts2 是要求 每次次访问 都对应不同的Action , scope="prototype" 可以保证 当有请求的时候 都创建一个Action对象
factory-method: bean的实例化中 ,默认情况下调用的是 类的默认构造方法,即无参数的构造方法。
例如
<bean  id='test' class='dxm.com.test.TestUser'>     这种方式采用的是默认的构造方法,构造TestUser对象
<bean  id='test' class='dxm.com.test.TestUser'   factory-method=‘CreateUser’>     这种方式采用的是CreateUser 方法,构造TestUser对象
init-method:   bean 对象得初始化方法名称
destroy-method:  bean 对象的销毁方法名称
如果所有对象都有相同的 初始化名称,或者销毁名称 ,则可以再 <beans> 上定义 default-init-method="init"    default-destroy-method="destroy"
lazy-init="default" :
lazy-init<beans><bean id="service1" type="bean路径" lazy-init="true"/><bean id="service2" type="bean路径" lazy-init="false"><property name="service1" ref="service1"/></bean></beans>以上两个bean,一个lazy-init属性为true,一个为false,由什么区别呢当 IoC容器启动时,service2会实例化,而service1则不会;但是但容器实例化service2时,service1也被实例化了,为什么呢,因为service2需要它。也就是说lazy-init="true"的bean,IoC容器启动时不会实例化该bean,只有当容器需要用到时才实例化它。lazy-init有利于容器效率,对于不需要的bean可以先不管。
abstract="true"<bean id="baseTxService"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true">……</bean>bean abstract="true"时,该bean不会被实例化,上面的bean是个模板
default-lazy-init="true": spring的容器是提供了lazy-load的,即默认的缺省设置是bean没有lazy-load,该属性处于false状态,这样导致spring在启动过程导致在启动时候,会默认加载整个对象实例图,从初始化ACTION配置、到service配置到dao配置、乃至到数据库连接、事务等等。
这么庞大的规模,难怪spring的启动时间要花将近1分钟。尝试了一下,把beans的default-lazy-init改为true就,再次启动,速度从原来的55秒,降到8秒钟!!Great!虽然是非常小一个改动,但是影响确实非常大。
这样做只是为了在开发过程中节约启动时间,在部署到实际环境中,倒是没必要设置default-lazy-init为true。毕竟部署到实际环境中不是经常的事,每次启动1分钟倒不是大问题,而且可以提高服务器效率。
parent="TestUser" :表示继承,继承父类的设置
depends-on="TestUser": 在实例化bean之前 如果依赖于另一个bean ,那么spring就会先去实例化被依赖的bean 并进行依赖注入,如果某个bean在生成之前要求另外一个bean先被实例,则可以指定depends-on 属性来设置 ,如果有两个以上的bean 要设置在depends-on中 用逗号隔开。
l例如:<bean id="service1" type="bean路径"   depends-on="TestUser"/>
autowire="byType": 表示属性内容自动绑定,根据属性类型来绑定默认值
autowire="autodetect"
autowire="constructor"
dependency-check="default": 检查某些依赖关系是否确立。
dependency-check="simple"
dependency-check="objects"
dependency-check="all"
dependency-check="none" :  none 是默认值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: