cubo de la familia primavera de aprendizaje (1)

Prefacio:

Septiembre del año pasado, mis colegas y yo en los frikis tiempo ganado Ding Xuefeng Familia del resorte cubo de aprendizaje 's, plan de estudios se divide en 16 capítulos en total, he aprendido la mayor parte, son registrados en un cuaderno antes, hoy quiero registro en el blog, compartir más conocimiento a las personas que necesitan ayuda, voy a ser el número de capítulos como el contenido del artículo, el curso original hablar con más detalle, yo estoy aquí para hacer un resumen sobre algunos puntos específicos.

1.Spring cubo de la familia contiene lo que?

Nacido en 2002, de un Rod Johnson, la primavera ha desarrollado ahora a la versión 5.x

Spring Framework

solución ligera para crear aplicaciones empresariales

concepto:

  • 1. encarnan el espíritu de la tolerancia a la diversidad sea
  • 2. mantener la compatibilidad hacia atrás
  • 3. Diseño de la API de enfoque
  • 4. persiguen calidad riguroso código

SpringBoot

El concepto: a construir rápidamente aplicaciones basadas en primavera

características:

  • 1. rápido 
  • 2. fuera de la caja.
  • 3. Para proporcionar una variedad de propiedades no funcionales
  • 4. no generan código de configuración XML
  • 5. contenedor Tomcat edificio, comienza muy conveniente.

 II. Entender la tendencia de desarrollo de la primavera

Los cambios apuntan:

  • 1.Java 8+ Kotlin 
  • 2.WebFlux (el ascenso de modelo de programación asíncrona)
  • 3. Retirar un gran apoyo (portlets obsoleta, la velocidad no mantiene una JasperReport fuera de moda)

III. La creación de un Programa de Primavera

omisión

IV. Cómo configurar una única fuente de datos

SpringBoot hacer lo que la configuración

  • DataSourceAutoConfiguration (配置 DataSource)
  • DataSourceTransactionManagerAutoConfiguation (配置 DataSourceTransactionManager)
  • JdbcTemplateAutoConfiguration (Configuración JdbcTemplate)

 

la información de configuración de conexión Mysql

spring.datasource.url=jdbc:mysql://localhost:3306/prod?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

 pom archivo dependiente introdujo

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>


Configuración de base de datos integrada h2

(1) Crear un nuevo proyecto SpringBoot

(2) En la creación de este proyecto SpringBoot cuando introdujo Hz y JDBC 

el contenido del archivo pom.xml son los siguientes:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
       <!--h2内嵌数据库-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

la información de configuración de conexión (3) h2 en el archivo de configuración

server.port=8007

management.endpoints.web.exposure.include=*
spring.output.ansi.enabled=ALWAYS

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=

(4) a la base de datos predeterminada para agregar datos h2

(5) para iniciar el servicio de esta primavera

Imprimir los datos cuando la conexión es h2 base de datos.

 

V. Cómo configurar múltiples fuentes de datos

Notas sobre la configuración de fuentes de datos múltiples:

  • 1. Las diferentes fuentes de datos a ser fijado por separado
  • 2. atención cada vez que utilice una fuente de datos
  •    a. DataSource pluralidad de cómo debe determinarse el sistema de
  •    b. las instalaciones correspondientes (asuntos, ORM, etc.) cómo elegir DataSource

configuración de múltiples fuentes de datos tiene dos formas:

La primera, confía completamente en la configuración manual, dependencias relacionadas SpringBoot excluidos, esto es totalmente posible.

En segundo lugar, si quieres colaborar con SpringBoot (elegir uno).

Una forma de tipo @Primary Configuración de frijol

Segunda manera. Excluido configura automáticamente fuera de SpringBoot

            (DataSourceAutoConfiguation DataSourceTransactionManagerAutoConfiguation JdbcTemplateAutoConfiguation)

 

Hoy en día, nos dice acerca de la utilización del segundo enfoque:

Paso (1):

Configurar la información de conexión en el archivo de configuración:

server.port=8007

management.endpoints.web.exposure.include=*
spring.output.ansi.enabled=ALWAYS

foo.datasource.url=jdbc:h2:mem:foo
foo.datasource.username=sa
foo.datasource.password=

bar.datasource.url=jdbc:h2:mem:bar
bar.datasource.username=sa
bar.datasource.password=

Etapa (2):

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class,
        JdbcTemplateAutoConfiguration.class})
public class SpringDemoApplication {


    public static void main(String[] args) {
        SpringApplication.run(SpringDemoApplication.class, args);
    }


}

Paso (3):

package  com.example.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.annotation.Resource;
import javax.sql.DataSource;

@Configuration
public class MultiDataSourceConfig {
    private Logger log = LoggerFactory.getLogger(MultiDataSourceConfig.class);

    /**
     * Config Foo DataSource
     * @return
     */
    @Bean
    @ConfigurationProperties("foo.datasource")
    public DataSourceProperties fooDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean
    public DataSource fooDataSource() {
        DataSourceProperties dataSourceProperties = fooDataSourceProperties();
        log.info("foo datasource: {}", dataSourceProperties.getUrl());
        return dataSourceProperties.initializeDataSourceBuilder().build();
    }

    @Bean
    @Resource
    public PlatformTransactionManager fooTxManager(DataSource fooDataSource) {
        return new DataSourceTransactionManager(fooDataSource);
    }

    /**
     *  Config Bar DataSource
     * @return
     */

    @Bean
    @ConfigurationProperties("bar.datasource")
    public DataSourceProperties barDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean
    public DataSource barDataSource() {
        DataSourceProperties dataSourceProperties = barDataSourceProperties();
        log.info("bar datasource: {}", dataSourceProperties.getUrl());
        return dataSourceProperties.initializeDataSourceBuilder().build();
    }

    @Bean
    @Resource
    public PlatformTransactionManager barTxManager(DataSource barDataSource) {
        return new DataSourceTransactionManager(barDataSource);
    }
}

En este artículo se llegó a la conclusión de que en primer lugar, en los pobres legibilidad del contenido del artículo demasiado, voy a salir en algunos de los artículos

 

 

 

 

Publicado 66 artículos originales · ganado elogios 49 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/tangthh123/article/details/104945631
Recomendado
Clasificación