Spring自动注入与加载配置文件

在spring配置文件中,对引用属性进行自动注入。

它和加载配置文件一起出现会出现问题。

 


一、自动注入

(一)、配置方式

  1、在<bean>中通过 autowire属性配置,只对这个bean生效

  2、在<beans>中通过default-autowire属性配置,对标签内的所有bean有效。

(二)、autowire取值

  1、no,默认的不自动注入。

  2、byName,通过比较属性名和容器内的bean的id值是否一致,若一致则自动注入。

  3、byType,通过比较属性所属的类,和容器内的bean所属类是否一致,若一致则自动注入,若容器内有多个同类型的bean,则会注入失败并抛出异常。

  4、constructor,通过构造器进行自动注入,构造器中的参数名和容器内的bean的id值一致,自动注入。(底层使用byName)

 


二、资源文件加载

(一)、准备资源文件

  db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:53306/lurenjia_web
jdbc.username=root
jdbc.password=123456

(二)、配置资源文件

  在spring配置文件中使用标签

    <!--配置资源文件-->
    <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>

(三)、获取配置文件信息

  使用${键名}获取

    <!--等价于dataSource标签,数据库连接配置-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

三、冲突

原理:

  全局配置的自动注入,会把创建对象的优先级跳到最高。

冲突:

  配置文件还没有读取,就开始创建对象,必然会创建失败。

解决:

  对于依赖配置文件创建的对象不要使用自动注入,例如数据库操作的对象。

posted @ 2023-02-28 16:05  在博客做笔记的路人甲  阅读(72)  评论(0编辑  收藏  举报