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

创建对象用到的标签<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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring 中,可以使用配置文件来进行依赖注入。有两种常用的配置文件方式:XML 配置和注解配置。 1. XML 配置方式: 首先,在配置文件中定义 bean,指定其 id 和 class。然后,通过构造函数或者属性的方式注入依赖项。以下是一个示例: ```xml <!-- 配置文件:applicationContext.xml --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 定义一个需要注入的 bean --> <bean id="userService" class="com.example.UserService"> <!-- 构造函数注入 --> <constructor-arg ref="userRepository" /> </bean> <!-- 定义另一个 bean --> <bean id="userRepository" class="com.example.UserRepository"> <!-- 属性注入 --> <property name="dataSource" ref="dataSource" /> </bean> <!-- 定义数据源 bean --> <bean id="dataSource" class="com.example.DataSource" /> </beans> ``` 在代码中使用 ApplicationContext 加载配置文件,并获取需要的 bean: ```java import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyApp { public static void main(String[] args) { // 加载配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 获取需要的 bean UserService userService = context.getBean("userService", UserService.class); userService.doSomething(); } } ``` 2. 注解配置方式: 使用注解配置可以更简洁地实现依赖注入。在类上使用 @Component 或其派生注解进行标记,表示将该类注册为一个 bean。然后,使用 @Autowired 注解自动注入依赖项。以下是一个示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class UserService { private UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } // 其他方法... } @Component public class UserRepository { private DataSource dataSource; @Autowired public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } // 其他方法... } @Component public class DataSource { // 数据源相关配置... } ``` 在代码中使用 ApplicationContext 加载配置文件,并获取需要的 bean: ```java import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class MyApp { public static void main(String[] args) { // 加载配置类 ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); // 获取需要的 bean UserService userService = context.getBean(UserService.class); userService.doSomething(); } } ``` 需要注意的是,使用注解配置方式时,需要在配置类上使用 @Configuration 注解,来指示它是一个配置类,例如: ```java import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { // 配置相关的 bean } ``` 这样就完成了 Spring依赖注入配置文件的介绍。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值