最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Spring配置文件应用

来源:动视网 责编:小OO 时间:2025-09-24 00:04:51
文档

Spring配置文件应用

配置文件基本BEAN的配置(可选)⑦⑤//可以有多个字符串和基本数据作为参数//表示空值可以使用代替//定义了list属性,就要使用list元素值1值2…..//可以定义多个值//定义了map属性,就要使用map元素值1值2…..//可以定义多个值//定义了properties属性,就要使用props元素值1值2…..//可以定义多个值//定义set属性使用set元素,在set集合中可以包含value,bean,ref元素值1注:①如果一个bean的singleton属性设置成true,表示整
推荐度:
导读配置文件基本BEAN的配置(可选)⑦⑤//可以有多个字符串和基本数据作为参数//表示空值可以使用代替//定义了list属性,就要使用list元素值1值2…..//可以定义多个值//定义了map属性,就要使用map元素值1值2…..//可以定义多个值//定义了properties属性,就要使用props元素值1值2…..//可以定义多个值//定义set属性使用set元素,在set集合中可以包含value,bean,ref元素值1注:①如果一个bean的singleton属性设置成true,表示整
配置文件基本BEAN的配置

“http://www.springframeork.org/dtd/spring-beans.dtd”>

    

    (可选)

class=”该bean所对应的包名+类名” 

singleton=”true/false” ①(可选)

depends-on=”Spring容器中被依赖的Bean的ID名” ②(可选)

autowire=”no/byName/byType/constructor/autodetect” ③(可选)

dependency-check=”none/simple/object/all” ④(可选)

init-method=”设置依赖关系注入后执行的方法名”

destroy-method=”设置Bean在销毁前执行的方法名”

abstract=”true/false”⑥

parent=”父类bean的ID名”>⑦

//可以有多个

字符串和基本数据作为参数//表示空值可以使用代替

    //定义了list属性,就要使用list元素

值1 值2….. //可以定义多个值 

    //定义了map属性,就要使用map元素

值1

值2

    ….. //可以定义多个值

        //定义了properties属性,就要使用props元素

值1

值2….. //可以定义多个值

    //定义set属性使用set元素,在set集合中可以包含value,bean,ref元素

值1

注:    ①如果一个bean的singleton属性设置成true,表示整个Spring容器里只有一个共享实例存在,如果设置成false,表示每次请求该ID的bean,Spring都会新建一个bean实例.该属性默认值为true.JAVA在创建和销毁JAVA实例时,都会导致系统开销.除非必要,尽量避免将bean的singleton属性设置成no-singleton行为.

②在极端情况下,bean之间的依赖不够直接,可以使用depends-on属性在初始化主调bean之前,强制一个或多个bean初始化

③Spring能自动装配bean与bean之间的依赖关系,也就是无需使用ref显式指定依赖bean,可以通过bean元素的autowire属性指定自动装配,让某些bean使用自动装配,而某些bean不使用。自动装配可以减少配置文件的工作量。

no:不使用自动装配,Bean依赖必须通过ref元素定义。这是默认的配置。

byName:根据属性名自动装配。即找到当前bean的属性中有与Spring容器中的bean元素的ID名匹配的。如果有就装配,没有就不装配。

byType:根据属性类型自动装配。Spring容器先查找当前类属性的类型与容器中全部bean类型是否有相同的,如果有就自动装配。如果有多个这样的bean就会抛出异常。

constructor:与byType类似,区别是有于构造注入的参数。如果容器中的bean没有与构造方法中的参数类型匹配的,就会抛出异常。

Autodetect:容器根据bean内部结构,来决定使用constructor还是byType.如果找到一个默认的不代参数的构造方法,那就会使用byType.

④dependency-check属性用来检查bean的属性的默认值是否有效.

none:不进行依赖检查,没有指定值的bean属性仅仅是没有设值.

simple:仅对基本类型和集合(除了合作者的Bean)进行依赖检查

object:仅对合作者bean进行依赖检查

all:对合作者bean,基本类型和集合全部进行依赖检查.

⑤使用bean元素里的lookup-method子元素是指容器能重写容器中的bean的抽象或具体方法,返回查找容器中其他bean的结果,当被依赖的bean的singleton属性为false时,此方法将每次产生一个新的对象.lookup方法注入不仅能用于设置注入,也可用于构造注入.

⑥当bean元素里abstract属性为true时,指明该bean是抽象bean,不能为实例化,因为上抽象bean不能被实例化,因此抽象bean可以没有class属性.因为抽象bean不能实例化,既不能通过getBean获得抽象bean,也不能让其它bean的ref指向该bean.

⑦设置了该bean的parent属性指向该bean的父类的ID,表示该bean继承这个父类.当子类指定了init-method,destroy-method和factory-medthod属性,则它们会覆盖父类的定义.子类无法从父类继承depends-on,autowire,dependency-check,singleton,lazy-init.如果父类定义指定了class属性,子类可以省略class属性.

高级依赖注入的配置

前面的依赖注入,要么是javabean式的值,要么是直接依赖于其它bean.实际应用中,某个实例的属性可能是某个方法的返回值,类的field值,或者者属性值.

属性值的依赖注入:

方法一: 把获得的值注入到其它的Bean里

            

Class=”org.springframework..beans.factory.config.PropertyPathFactoryBean”>

     该值指定从哪个Bean(容器中的Bean的ID名)中获得值

     该值指定targetBeanName中指定Bean中的某一属性名

方法二: 用获得的值创建一个新Bean

    

        

             11

        

    

    

            

         Class=”org.springframework.beans.factory.config.PropertyPathFactoryBean”>

    

Field值的依赖注入:

方法一:把获得的值注入到其它的Bean里

    

         Class=”org.springframework.beans.factory.config.

FieldRetrievingFactoryBean”>

    

方法二:用获得的值创建一个新Bean

FieldRetrievingFactoryBean”>

        

    

        java.sql.Connection.TRANSACTION_SERIALIZABLE

    

方法返回值的依赖注入:

方法一:某个对象方法的值

    

MethodInvokingFactoryBean”>

    

    

    

确定调用上面指定的Bean哪个方法

    

    

方法二:获得静态方法的值

    

MethodInvokingFactoryBean”>

    

    

    

确定调用上面指定的类的哪个方法

    

    

 

BeanFactoryPostProcessor的实现类

1.PropertyPlaceholderConfigurer (属性占位符配置器)

PropertyPlaceholderConfigurer可以读取java properties文件中的属性,然后插入BeanFacotry定义中,从而,无须对BeanFactory主XML定义进行修改,就可以修改一些基本属性(比如说数据库的urls,用户名,密码)

    

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    

        

            

             dbconn.properties

            

        

    

    

class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">

    

    

    

    

    

2.PropertyOverrideConfigurer是BeanFactoryPostProcessor另一个实现类,它使用的属性文件用于覆盖xml配置文件中的默认值.

注:properties属性文件格式必须是:   beanName.property=value

class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">

    

        

            

             dbconn.properties

        

    

    

class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">

    

    

    

    

通过配置文件设置工厂bean和产品bean

在容器中的bean本身就是工厂,其作用是产生其他bean实例,通常情况这种bean没有特殊要求,仅需要提供一个工厂方法,该方法用来返回其它的bean实例.工厂bean配置和其他bean的配置也没有任何区别.产品bean就是由工厂bean产生的实例,不再由Spring容器产生,因此与普通bean配置不同,不再需要提供class元素.

    

        

    

        

    

         Factory-bean=”指定产生该产品bean的工厂bean的ID名”

Factory-method=”指定产生该产品bean的工厂bean方法名”>

用于传入工厂bean方法的参数值

        

    

         Class=”org.springframework.beans.factory.config.

MethodInvokingFactoryBean”>

                    

                

                

                    

                

工厂bean的方法名

                

                    

                

接受的参数值 //可以有多个参数

                

        

    

文档

Spring配置文件应用

配置文件基本BEAN的配置(可选)⑦⑤//可以有多个字符串和基本数据作为参数//表示空值可以使用代替//定义了list属性,就要使用list元素值1值2…..//可以定义多个值//定义了map属性,就要使用map元素值1值2…..//可以定义多个值//定义了properties属性,就要使用props元素值1值2…..//可以定义多个值//定义set属性使用set元素,在set集合中可以包含value,bean,ref元素值1注:①如果一个bean的singleton属性设置成true,表示整
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top