视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Spring配置文件应用
2025-09-24 00:04:51 责编:小OO
文档
配置文件基本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的方法名

                

                    

                

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

                

        

     下载本文

显示全文
专题