• 【Spring】spring管理第三方资源;加载Properties文件


    数据源管理第三方资源

    【举两个例子关于spring管理第三方资源,配置非自己写的类型。此时我们要配置的bean并不是我们熟悉的,对于要配置它的什么,我们要根据软件提示和搜索去了解,重在学习如何管理第三方资源】

    • 所需的坐标(后面的使用记得导入相应的jar包)
      <!---spring核心jar包->
      <dependency>
      	<groupId>org.springframeworkgroupId>
      	<artifactId>spring-contextartifactId>
      	<version>4.3.9.RELEASEversion>
      dependency>
      
      <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <version>5.1.44version>
      dependency>
      
      <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druidartifactId>
        <version>1.1.16version>
      dependency>
      
      <dependency>
        <groupId>c3p0groupId>
        <artifactId>c3p0artifactId>
        <version>0.9.1.2version>
      dependency>
      dependencies>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
    德鲁伊
    • applicationContext.xml文件中bean配置
    
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/数据库"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
    	bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    c3p0
    • applicationContext.xml文件中bean配置
    
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/数据库名"/>
            <property name="user" value="root"/>
            <property name="password" value="root"/>
            <property name="maxPoolSize" value="30"/>  //最大连接池数量
            ……还有其他的内容我们可以注入,可以输出dataSource看里面还有什么属性
        bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    • 测试类(注意我写了一个测试类,测试哪个把另一个id删掉测试)
    /**
     * 数据源对象管理
     */
    public class Test{
        public static void main(String[] args) {
            //使用ClassPathXmlApplicationContext读取配置文件
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            DataSource dataSource = (DataSource) context.getBean("dataSource");
            System.out.println(dataSource);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    控制台输出结果不在展示,显示一下c3p0的部分输出,可以看到我们注入的内容:

    ………………jdbcUrl -> jdbc:mysql://localhost:3306/smbms, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, m………………

    【我们在学习中将jdbc的url、name、password等参数提取出来放在一个文件中,这类文件如何管理呢?】

    加载Properties文件

    ▶我们将jdbc的加载内容提取为jdbc.properties文件

       jdbc.driverClassName = com.mysql.cj.jdbc.Driver
       jdbc.url =jdbc:mysql://127.0.0.1:3306/数据库名?userSSl=false&userServerPrepStmts=true
       jdbc.username = root
       jdbc.password = root
    
    • 1
    • 2
    • 3
    • 4

    ▶1.开启新的命名空间(context命名空间开启)

    
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
        ">
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述
    ▶2.加载properties文件

    
    <context:property-placeholder location="jdbc.properties"/>
    
    • 1
    • 2

    ▶3.使用属性古位符${}读取properties文件中的属性

    
    <bean class="com.alibaba.druid.pool.DruidDataSource">
    	<property name="driverclassName" value="${jdbc.driver}"/>
    	<property name="ur1" value="${jdbc.ur1}"/>
    	<property name="username" value="${jdbc.username}" />
    	<property name="password" value="${jdbc.password}"/>
    bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ▶写测试类去测试输出一下属性值……省略

    注意:

    倘若我们不注意名字的规范
    在这里插入图片描述
    获取当前属性,username会不输出的,与系统的环境变量名冲突
    在这里插入图片描述
    我们可以加属性 system-porperties-mode=“NEVER” ,让他不加载系统环境变量

    若是有多个properties文件要加载,在location中用逗号隔开即可

    或者

    最规范格式:

    有些框架中会有人家原始就自带的properties文件,上面的格式是读取不到的,需要在加一个星号
    【表示既可以读取工程问价,也可以它所依赖的jar包中读】

    在这里插入图片描述

  • 相关阅读:
    [字符串和内存函数]strcmp和strncmp以及memcmp的区别
    mysql 运行参数优化
    84.(cesium篇)cesium模型在地形上运动
    oracle创建表空间、用户、权限以及导入dmp文件
    Android 12.0首次开机默认授予app运行时权限(去掉运行时授权弹窗)
    XML概述
    第10讲:DQL数据查询语句之LIMIT分页查询示例
    springboot基础(31):Mongodb的基本操作
    tensorflow tf.tile 使用教程·
    ImmunoChemistry艾美捷牛膜联蛋白V-荧光素凋亡检测试剂盒方案
  • 原文地址:https://blog.csdn.net/m0_70083523/article/details/127660097