Spring5 xml配置文件 依赖注入 小结

本文详细介绍了Spring框架中如何使用bean标签创建对象,包括id和class属性的使用。接着讲解了依赖注入的三种方式:set方法注入、构造函数注入和p名称空间注入,并展示了如何处理自定义类型、空值和特殊字符的情况。此外,还讨论了集合类型的注入,以及如何利用util命名空间简化代码。最后提到了JDBC模板和Druid数据源的配置,以及事务管理和注解@Transactional的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建对象用到的标签<bean> 主要用到的属性有两个 id ,class。

        id:给标签一个标识以便于我们在代码中通过id来创建对象

        class:类的全限定类名,表示我们要创建哪一个类

<bean id="user" class="com.company.User"></bean>

创建对象之后就是注入了,注入主要分为两种一种是set方法的注入,另一种是通过带参的构造函数的注入,还有一种较为少见 p名称空间注入。

    <!-- 通过set方法的注入 -->
    <bean id="user" class="com.company.User">
        <property name="userName" value="zsby" ></property>
        <property name="userSex" value="1"></property>
        <property name="userAge" value="1"></property>
    </bean>
    <!-- 使用带参数的构造函数进行依赖注入  -->
    <bean id="user1" class="com.company.User">
        <constructor-arg name="userName" value="zsby1"></constructor-arg>
        <constructor-arg name="userAge" value="12"></constructor-arg>
        <constructor-arg name="userSex" value="0"></constructor-arg>
    </bean>
<!--首先在代码头部进行修改-->
xmlns:p="http://www.springframework.org/schema/p"
<!--之后就可以通过p:属性名的方法直接进行注入-->
<bean id="user0" class="com.company.User" p:userName="zsby" p:userSex="1" p:userAge="1">

</bean>

如果一个类的属性是用户自己定义的数据类型那么需要用到 注入外部bean 既在xml中把要注入的类用bean表示出来并且取一个id。之后的property 和 construcor-arg标签中的value属性换成ref属性。

        ref:值为外部bean的id

其次如果想要注入空值和带有特殊符号的值需要用特别的格式否则就会报错

    <!-- 如果想要赋的值为空则     -->

        <property name="userName" >
            <null/>
        </property>


    <!-- 如果属性包含特殊符号     -->

        <property name="userName" >
            <value><![CDDATA[<<南京>>]]></value>
        </property>

在对集合类型的属性进行注入的时候 因为集合类型的值不止一个所以通过value标签无法满足我们的要求。

    //在类中又增加了如下的集合属性
    private String[] course;
    private List<String> list;
    private Map<String,String> map;
    <bean name="user3" class="com.company.User">
        <property name="course">
    <!-- 对数组使用array 标签-->
            <array>
                <value>语文</value>
                <value>数学</value>
                <value>英语</value>
                <value>政治</value>
            </array>
        </property>
    <!-- 对列表使用list标签-->
        <property name="list">
            <list>
                <value>张三</value>
                <value>李四</value>
                <value>啊啊</value>
            </list>
        </property>
    <!-- 对map使用map标签,同时因为数据由键值对组成所以用entry -->
        <property name="map">
            <map>
                <entry key="Java" value="java"></entry>
                <entry key="PHP" value="php"></entry>
            </map>
        </property>
        <constructor-arg name="userName" value="zsby1"></constructor-arg>
        <constructor-arg name="userAge" value="12"></constructor-arg>
        <constructor-arg name="userSex" value="0"></constructor-arg>
    </bean>

以上的集合类型的数据的用法复用性不足,每次我们要使用的时候就需要再写一遍。util命名空间便解决了这一问题。

<!-- 同样在文件头加入-->
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"


<!-- 用法如下-->
<util:list id="list0">
            <value>语文</value>
            <value>数学</value>
            <value>英语</value>
            <value>政治</value>
</util:list>

<bean name="user4" class="com.company.User">
        <property name="course" ref="list0"></property>
</bean>

2022-9-17

学习了JDBCTemplate 德鲁伊数据源 的数据库操作。

常用的配置有

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>

    <bean id="jdbct" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg ref="dataSource"></constructor-arg>
    </bean>

注入之后常用的方法有,update,queryForObject,batchUpdate,query

其中query函数的RowMapper参数需要entity类的参数与数据库表的表头参数相匹配。

批量操作的batchupdate,的参数要注意采用的是object[]数组来对应批量的sql语句中的 ?(问号变量)。

之后便是事务操作以及新特性

事务

  
    <!-- 创建事务管理器-->
    <bean id="transaction" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
<!-- 导入tx命名空间并且开启扫描-->

    <tx:annotation-driven transaction-manager="transaction"></tx:annotation-driven>
之后使用注解@Transactional
该注解在类和方法上都可以使用。注解加在类上面表示给这个类的所有方法添加了事务,如果在方法上面则只是该方法添加了事务

未完成部分有,事务的xml方式管理以及完全注解管理。spring5的新特性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值