Gestión de configuración de recursos de terceros de Spring

inserte la descripción de la imagen aquí
[Tecnología de Spring] Arquitectura de Spring
[Tecnología de Spring] Caso de entrada de IOC y DI de Spring
[Tecnología de Spring] Configuración y ejemplos de Bean de Spring
[Tecnología de Spring] Inyección de dependencia de Spring (configuración DI)
[Tecnología de Spring] Gestión de configuración de recursos de terceros de Spring
[Tecnología de Spring ] Spring Container Technology
[Spring Technology] Spring Anotation Development
[Spring Technology] Spring Integration Mybatis&Junit Unit Test
[Spring Technology] Spring AOP
[Spring Technology] Spring Transaction Management

Descripción: tome la gestión de los objetos del grupo de conexiones de DataSource como ejemplo para explicar la gestión de configuración de recursos de terceros

1. Administrar objetos de grupo de conexiones de DataSource

importación de problemas

Al configurar los parámetros de conexión de la base de datos, ¿el nombre de la clase del controlador inyectado debe ser driverClassName o driver?

1.1 Administrar el grupo de conexiones de Druid [puntos clave]

preparación de base de datos

create database if not exists spring_db character set utf8;
use spring_db;
create table if not exists tbl_account(
    id int primary key auto_increment,
    name varchar(20),
    money double
);
insert into tbl_account values(null,'Tom',1000);
insert into tbl_account values(null,'Jerry',1000);

[Paso 1] Agregue la dependencia del grupo de conexiones de Druid

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

Nota: Además de agregar las dos dependencias anteriores, no olvide agregar dependencias de contexto de primavera.

[Paso 2] Configure el objeto Bean del grupo de conexiones DruidDataSource

<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/spring_db"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean>

[Paso 3] Obtenga el objeto del grupo de conexiones del contenedor IOC en la clase de prueba e imprímalo

public class App {
    
    
    public static void main(String[] args) {
    
    
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
    }
}

1.2 Administrar grupo de conexiones c3p0

[Paso 1] Agregue la dependencia del grupo de conexiones c3p0

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>

[Paso 2] Configure el objeto Bean del grupo de conexiones c3p0

<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/spring_db"/>
    <property name="user" value="root"/>
    <property name="password" value="root"/>
    <property name="maxPoolSize" value="1000"/>
</bean>

Nota: No puede haber dos grupos de conexiones con id="dataSource" en el mismo contenedor Spring.

[Paso 3] Obtenga el objeto del grupo de conexiones del contenedor IOC en la clase de prueba e imprímalo

public class App {
    
    
    public static void main(String[] args) {
    
    
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
    }
}

2. Cargue el archivo de propiedades de propiedades [clave]

Propósito: extraer los parámetros de conexión de la base de datos en un archivo separado y desvincularlo del archivo de configuración de Spring.

importación de problemas

Pregunta 1: ¿Cómo resolver el problema de que la propiedad del sistema se lee como resultado del uso de la expresión EL para leer el valor en el archivo de propiedades?

Pregunta 2: ¿Cómo escribir el método de escritura estándar para cargar el archivo de propiedades?

2.1 Uso básico

[Paso 1] Escriba el archivo de propiedades jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root

[Paso 2] Abra el espacio de nombres de contexto en applicationContext.xml y cargue el archivo de propiedades jdbc.properties

imagen-20210730101826913

Sugerencia: si los estudiantes sienten que el método de copiar y pegar anterior no es fácil de cambiar o de corregir errores, de hecho, la idea tiene una función rápida, solo tenga cuidado de no elegir la incorrecta. Algunas versiones de la idea no tienen este aviso, así que simplemente siga el método de copiar y pegar anterior para modificarlo.Después de la modificación, se puede convertir en una plantilla de plantilla en vivo, que se puede usar directamente más adelante.

imagen-20210730102053281

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

[Paso 3] Use la expresión EL para obtener el valor en el archivo de propiedades jdbc.properties donde está configurado el bean del grupo de conexiones

<bean class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

Una vez completada la configuración, ejecute el código anterior para obtener el grupo de conexiones de Druid y, si se puede obtener el objeto del grupo de conexiones, la configuración es correcta.

2.2 La configuración no carga las propiedades del sistema

pregunta

Si la configuración en el archivo de propiedades no es jdbc.username, sino username=root666, entonces use ${username} para obtener no root666, sino el nombre de la computadora.

razón

La propiedad del sistema tiene prioridad sobre la de nuestro archivo de propiedades, reemplazando nuestro nombre de usuario = root666.

resolver

Solución 1: Cambie el nombre, por ejemplo, en lugar de nombre de usuario, llame a jdbc.username.

Solución 2: utilice el atributo system-properties-mode="NEVER" para indicar que no se utilizan las propiedades del sistema.

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>

2.3 Método de escritura del archivo de propiedades de carga

  • No cargar propiedades del sistema
<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
  • Carga múltiples archivos de propiedades
<context:property-placeholder location="jdbc.properties,msg.properties"/>
  • Cargar todos los archivos de propiedades
<context:property-placeholder location="*.properties"/>
  • Cargar archivo de propiedades**formato estandar**
<context:property-placeholder location="classpath:*.properties"/>
  • Cargue el formato estándar del archivo de propiedades
<context:property-placeholder location="classpath*:*.properties"/>

Supongo que te gusta

Origin blog.csdn.net/qq_51808107/article/details/130317170
Recomendado
Clasificación