Spring的IOC学习5(管理第三方bean、引入外部配置文件、基于xml文件的自动装配、spEL表达式语言)

本文介绍了如何在Spring项目中使用Druid数据源管理数据库连接,包括在XML配置文件中导入Druid和MySQL的依赖,设置数据库连接信息,并展示了测试类的示例。接着,讨论了如何通过外部配置文件(db.properties)来实现数据库连接信息的分离,以提高代码的可维护性。最后,提到了Spring的自动装配特性及SpEL表达式语言的应用,展示了在bean中如何利用这些特性进行属性注入和表达式计算。

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

1、管理第三方bean:这里的管理第三方bean,其实就是导入druid jar,从而获取DruidDataSource对象,也就是管理第三方bean,而这个对象正是可以获取数据库连接池,因此我们需要再导入mysql jar包,与数据库创建连接。
ioc.xml

<!--
        调用第三方的bean
        这里调用的是阿里巴巴开发的druid中的DruidDataSource数据连接池,从而连接数据库
    -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/green"></property>
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
    </bean>

项目是使用maven,所以在此之前需要导入pom依赖,需导入druid1.2.8以及mysql8.0.21的jar包。

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>

下面是测试类:
MyTest.class

DruidDataSource dataSource = applicationContext.getBean("dataSource", DruidDataSource.class);
        System.out.println(dataSource);
        System.out.println(dataSource.getConnectCount());

2、引入外部配置文件
在与数据库连接的bean中,若需要更改数据库连接信息,则需不断的更改配置信息,若把与数据库连接的信息分离出来,达到低耦合,文件更改也方便,因此便引入了外部配置文件。
(1)在ioc.xml同目录下创建db.properties文件。
(2)将数据库连接属性写入配置文件

username=root123
password=root
url=jdbc:mysql//localhost:3306/green
driverClassName=com.mysql.cj.jdbc.Driver

(3)在ioc.xml头文件信息中引入context标签以及调用context标签获取连接

xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="...http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"
<!--调用context标签-->
<context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
<!--通过context标签所连接的配置文件获取属性信息-->
<bean id="dataSource2" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
        <property name="url" value="${url}"></property>
        <property name="driverClassName" value="${driverClassName}"></property>
    </bean>

在bean标签获取的username的值时,需要读取配置文件,而读取配置文件会默认读取系统某些环境变量的配置,因此可能存在名字冲突,便会获取到其他的值,可以在配置文件中可以添加前缀,以区分。
3、基于xml文件的自动装配

<!--
        自动装配:将某些bean注入到另外的bean中,使用autowire属性
        default/no:不装配
        byName:按照id来实现自动装配,根据set方法后面的名称首字母小写决定的,若有多个,会选择默认第一个
        byType:根据bean的类型决定的,若有多个类型就会报错
        constructor:按照构造器进行装配,首先按照类型进行配置,如果有多个类型相同的bean,在按照id去进行判断

        ?????
    -->
    <bean class="com.msb.bean.Address">
        <property name="province" value="广东"></property>
        <property name="city" value="广州"></property>
        <property name="town" value="增城"></property>
    </bean>
    <bean id="person8" class="com.msb.bean.Person" autowire="constructor"></bean>

4、spEL表达式语言

<!--spEL表达式语言-->
    <bean id="person9" class="com.msb.bean.Person">
        <!--引入外部bean-->
        <property name="address" value="#{address}"></property>
        <!--引入外部bean属性-->
        <property name="name" value="#{address.province}"></property>
        <!--支持运算符的所有操作-->
        <property name="age" value="#{12+3}"></property>
        <!--可以调用静态方法-->
        <property name="grender" value="#{T(java.util.UUID).randomUUID().toString().substring(0,5)}"></property>
        <!--可以调用非静态方法-->
        <property name="hobbies" value="#{address.getCity()}"></property>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值