Notas de estudio de primavera --- Inicio rápido con SpringBoot

Notas de estudio de primavera --- Inicio rápido con SpringBoot

Notas de estudio de primavera: SpringBoot

Los objetivos de hoy:

  • Domine los pasos del desarrollo de programas basados ​​en el marco SpringBoot.
  • Competente en el uso de la información de configuración de SpringBoot para modificar la configuración del servidor.
  • Desarrollo completo de proyecto de integración SSM basado en SpringBoot

1 Introducción a SpringBoot

SpringBootes Pivotalun marco completamente nuevo proporcionado por el equipo y está diseñado para ser utilizadosimplificar SpringAplicadoConfiguración inicialasí comoproceso de desarrollo

El uso Springdel marco ha simplificado nuestro desarrollo. Y SpringBootsimplifica Springel desarrollo, así que puedes imaginar SpringBootla simplicidad y el uso generalizado. Dado que SpringBootse utiliza para simplificar Springel desarrollo, repasémoslo primero, tomando SpringMVCel desarrollo como ejemplo:

  1. Cree un proyecto y pom.xmlconfigure las coordenadas dependientes en el archivo de configuración.

Insertar descripción de la imagen aquí

  1. Escribe web3.0la clase de configuración.

    Como webprograma, web3.0la clase de configuración es indispensable y esta clase de configuración es bastante problemática, el código es el siguiente
    Insertar descripción de la imagen aquí

  2. Escribe SpringMVCla clase de configuración.
    Insertar descripción de la imagen aquí

​ Hacer esto es simplemente configurar el marco del proyecto. Para que el mundo exterior pueda acceder a él, al menos debe proporcionar una Controllerclase y un método en la clase.

  1. escribir Controllerclase

Insertar descripción de la imagen aquí

Del SpringMVCdesarrollo del programa anterior, podemos ver que los primeros tres pasos tienen que ver con la configuración del entorno, y estos tres pasos son básicamente fijos. SpringBootEsto es para simplificar estos tres pasos. A continuación, utilizamos un caso introductorio para demostrar el desarrollo SpingBootsimplificado Spring.

1.1 Inicio rápido de SpringBoot

1.1.1 Pasos de desarrollo

SpringBootEs muy sencillo de desarrollar y se divide en los siguientes pasos:

  • Cree un nuevo módulo, seleccione Inicialización de Spring y configure la información básica sobre el módulo
  • Seleccione el conjunto de tecnologías que utilizará el módulo actual
  • Desarrollar clase de controlador
  • Ejecute la clase de aplicación generada automáticamente

Después de conocer SpringBootlos pasos de desarrollo, procedamos con las operaciones específicas.

1.1.1.1 Crear nuevo módulo
  • Haga clic +en Seleccionar New ModuleCrear nuevo módulo
    Insertar descripción de la imagen aquí

  • Seleccionar Spring Initializr, utilizado para crear SpringBootel proyecto.

    Lo que elegimos antes es Mavenque hoy elegimos Spring Initializrconstruir rápidamente SpringBootel proyecto. En Module SDKeste elemento, seleccione la versión que instalamos JDK.

Insertar descripción de la imagen aquí

  • SpringBootRealizar ajustes relevantes para el proyecto.

    Los proyectos que construimos usando este método SpringBootson en realidad Mavenproyectos, y este método es solo una forma rápida de construir.
    Insertar descripción de la imagen aquí

    Nota: El método de empaquetado aquí debe configurarse enJar

  • Seleccione Weby luego marqueSpring Web

    Dado que necesitamos desarrollar un webprograma que utilice SpringMVCtecnología, marque la casilla roja como se muestra a continuación.
    Insertar descripción de la imagen aquí

  • La interfaz en la imagen a continuación no requiere ninguna modificación, simplemente haga clic Finishpara completar SpringBootla construcción del proyecto.

Insertar descripción de la imagen aquí

Después de los pasos anteriores se crea un módulo con la siguiente estructura, que nos ayudará a generar automáticamente una Applicationclase, que será utilizada al iniciar el servidor más adelante.

Insertar descripción de la imagen aquí

Aviso:

  1. No es necesario crear una clase de configuración en el proyecto creado.

  2. El proyecto creado generará automáticamente algunos otros archivos, pero estos archivos actualmente no nos sirven, por lo que podemos eliminarlos.

    Los directorios y archivos que se pueden eliminar son los siguientes:

    • .mvn
    • .gitignore
    • HELP.md
    • mvnw
    • mvnw.cmd
1.1.1.2 CrearController

com.itheima.controllerCreado bajo el paquete , BookControllerel código es el siguiente:

@RestController
@RequestMapping("/books")
public class BookController {
    
    

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
    
    
        System.out.println("id ==> "+id);
        return "hello , spring boot!";
    }
}
1.1.1.3 Iniciar el servidor

SpringBootNo es necesario utilizar complementos locales para ejecutar el proyecto. Solo Tomcatse ejecutan las clases com.itheimabajo el paquete del proyecto Application. Podemos ver la siguiente información en la consola.
Insertar descripción de la imagen aquí

1.1.1.4 Realización de pruebas

Utilice Postmanherramientas para probar nuestros programas.

Insertar descripción de la imagen aquí

A través del caso introductorio anterior, podemos ver que usar SpringBootpara el desarrollo hace que todo el desarrollo sea muy simple, entonces, ¿cómo se hace?

Para estudiar este problema, debemos mirar lo que está escrito sobre Applicationclases y . pom.xmlPrimero echemos un vistazo a la clase Applicaion. El contenido de esta clase es el siguiente:

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

Las cosas en esta clase son muy simples, simplemente agregue una @SpringBootApplicationanotación a la clase y solo habrá una línea de código en el método principal. El método principal de esta clase se ejecuta cuando iniciamos el servidor.

Eche otro vistazo al pom.xmlcontenido del archivo de configuración.

<?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.5.0</version>
    </parent>
    <groupId>com.itheima</groupId>
    <artifactId>springboot_01_quickstart</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!--JDK 的版本-->
    <properties>
        <java.version>8</java.version>
    </properties>
    
    <dependencies>
        <!--该依赖就是我们在创建 SpringBoot 工程勾选的那个 Spring Web 产生的-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
		<!--这个是单元测试的依赖,我们现在没有进行单元测试,所以这个依赖现在可以没有-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--这个插件是在打包时需要的,而这里暂时还没有用到-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

La razón por la que nuestro código se puede simplificar es por el proyecto principal especificado y Spring Webla implementación de dependencia. Hablaremos de los detalles más adelante.

1.1.2 Comparación

Después de terminar SpringBootel caso introductorio, comparemos Springel programa y SpringBootel programa. Como se muestra abajo
Insertar descripción de la imagen aquí

  • coordinar

    SpringLas coordenadas en el programa deben ser escritas por usted mismo, y hay muchas coordenadas

    SpringBootLas coordenadas en el programa se generan automáticamente comprobando cuando creamos el proyecto.

  • clase de configuración web3.0

    SpringEl programa necesita escribir esta clase de configuración por sí mismo. Todo el mundo ha escrito esta clase de configuración antes y debe parecer muy complicado.

    SpringBootNo es necesario que el programa lo escribamos nosotros mismos.

  • Clase de configuración

    Spring/SpringMVCLa clase de configuración del programa debe ser escrita por usted mismo. SpringBootNo es necesario escribir el programa .

Spring InitializrNota: La construcción rápida de proyectos basados ​​en Idea SpringBootrequiere una conexión a Internet.

1.1.3 Proyecto de construcción del sitio web oficial

En el caso básico, SpringBootel proyecto se puede construir rápidamente porque se implementa Ideautilizando los componentes proporcionados por el sitio web oficial para construir el proyecto rápidamente . SpringBootEntonces, ¿cómo crear proyectos en el sitio web oficial? Construya siguiendo los pasos

1.1.3.1 Ingrese al sitio web oficial de SpringBoot

La dirección del sitio web oficial es la siguiente:

https://spring.io/projects/spring-boot

Después de ingresar SpringBootal sitio web oficial, arrástrelo hacia la parte inferior y verá el siguiente contenido
Insertar descripción de la imagen aquí

Luego haga clic en Spring Initializrel hipervínculo y saltará a la siguiente página.

Insertar descripción de la imagen aquí

¿Te resulta familiar el contenido de esta página? Es básicamente la misma que la interfaz que utilizamos para utilizar el proyecto IdeaQuick Build SpringBoot. Ingrese la información correspondiente en la página de arriba

1.1.3.2 Seleccionar dependencias

Para seleccionar, Spring Webpuede hacer clic en el botón en la esquina superior derecha de la imagen de arriba ADD DEPENDENCIES... CTRL + By aparecerá la siguiente interfaz.
Insertar descripción de la imagen aquí

1.1.3.3 Generar proyecto

Una vez completados los pasos anteriores, SpringBootse puede generar el proyecto. Haga clic en el botón en la parte inferior de la página GENERATE CTRL + 回车para generar el proyecto y descargarlo localmente, como se muestra en la siguiente figura.

Insertar descripción de la imagen aquí

Abra el paquete comprimido descargado y podrá ver que la estructura del proyecto Ideaes exactamente la misma que la generada usando, como se muestra a continuación
Insertar descripción de la imagen aquí

Al abrir pom.xmlel archivo, también contiene Spring Weblas dependencias del proyecto principal y.

A través de la operación del sitio web oficial anterior, sabemos que el proyecto Ideade compilación rápida SpringBooten el sitio web oficial es en realidad el componente de compilación rápida del sitio web oficial. En el futuro, incluso si no existe, Ideaaún puede usar el sitio web oficial para construir. SpringBootel proyecto.

1.1.4 Inicio rápido del proyecto SpringBoot

1.1.4.1 Importación de problemas

Insertar descripción de la imagen aquí

En el futuro, colaboraremos con los desarrolladores de front-end en el desarrollo. Si los desarrolladores de front-end necesitan probar el programa de front-end, deben abrir el servidor en el back-end, lo cual está sujeto a los desarrolladores de back-end. Para deshacerse de esta restricción, los desarrolladores de front-end intentan instalar Tomcate Ideainiciar el programa de back-end en sus propias computadoras, lo que obviamente no es realista.

Nuestro backend puede SpringBootempaquetar el proyecto en jarun paquete. El funcionamiento de este jarpaquete no depende Tomcaty Ideaestas herramientas también pueden ejecutarse normalmente. Solo que este paquete necesita conectarse a la misma base de datos jarque nuestro propio programa durante el proceso de ejecución . MysqlEsto puede resolver este problema, como se muestra a continuación.
Insertar descripción de la imagen aquí

Entonces ahora la pregunta es ¿cómo empaquetarlo?

1.1.4.2 Embalaje

Dado que hemos configurado los siguientes complementos SpringBootal construir el proyectopom.xml

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

Entonces solo necesitamos usar Mavenel packagepaquete de comandos para targetgenerar el Jarpaquete correspondiente en el directorio.

jarNota: Este complemento debe configurarse; de ​​lo contrario , habrá problemas con el paquete empaquetado .

1.1.4.3 Inicio

Ingrese jarla ubicación del paquete e 命令提示符ingrese el siguiente comando en

jar -jar springboot_01_quickstart-0.0.1-SNAPSHOT.jar

Ejecute el comando anterior para ver SpringBootla información del registro en ejecución.

Insertar descripción de la imagen aquí

1.2 Descripción general de SpringBoot

SpringBootes un marco completamente nuevo proporcionado por el equipo de Pivotal y está diseñado parasimplificarAplicación de primaveraConfiguración inicialasí comoproceso de desarrollo

Todos ya han experimentado SpringBootel programa, miremos hacia atrás y veamos SpringBootcuál es su función principal, que es simplificar Springel proceso de construcción y el proceso de desarrollo.

SpringExisten los siguientes problemas en la construcción y desarrollo del entorno original :

  • La configuración es engorrosa
  • La configuración de dependencia es engorrosa

SpringBootLas ventajas del programa pasan a estar dirigidas a Springlas desventajas de

  • Configuración automática. Esto se utiliza para resolver Springel problema de la complicada configuración del programa.
  • Comienza dependiente. Esto se utiliza para resolver Springel problema de las engorrosas configuraciones de dependencia del programa.
  • Accesibilidad (servidor integrado,…). SpringBootNo utilizamos complementos ni locales al iniciar el programa, sino que utilizamos tomcatel servidor integrado.tomcatSpringBoot

A continuación, hablemos de SpringBootlas dependencias iniciales de

1.2.1 Dependencias iniciales

Muchas dependencias que contienen se generan automáticamente en el archivo de configuración del proyecto que Spring Initializrcreamos usando el método , como se muestra a continuaciónMavenpom.xmlstarter
Insertar descripción de la imagen aquí

Estas dependencias sonDependencias de inicio, exploremos cómo lo logra.

1.2.1.1 Explorar el proyecto principal

En el archivo anterior, podemos ver que se especifica un proyecto principal. Ingresamos al proyecto principal y encontramos que se especifica otro proyecto principal en el proyecto principal, como se muestra en la siguiente figura.
Insertar descripción de la imagen aquí

Luego ingrese al proyecto principal. En este proyecto, podemos ver la estructura del contenido de configuración como se muestra a continuación.
Insertar descripción de la imagen aquí

Las etiquetas en la figura anterior propertiesdefinen las versiones de las que depende cada software técnico, lo que nos evita considerar problemas de compatibilidad de versiones cuando utilizamos diferentes tecnologías de software. En properties, encontramos las versiones de servlety mysqlcomo se muestra a continuación.
Insertar descripción de la imagen aquí

dependencyManagementLa etiqueta es para bloquear la versión de la dependencia, pero la dependencia correspondiente no se importa; si nuestro proyecto necesita esa dependencia, solo necesitamos introducir la dependencia groupidy artifactIdno es necesario definirla version.

La versión del complemento también está buildbloqueada en la etiqueta, como se muestra a continuación.
Insertar descripción de la imagen aquí

Después de leer pom.xmlla configuración en el proyecto principal, no es difícil entender por qué las dependencias de nuestro proyecto no están configuradas version.

1.2.1.2 Explorando dependencias

pom.xmlLas siguientes dependencias están configuradas en el proyecto que creamos.
Insertar descripción de la imagen aquí

Ingrese la dependencia y verifique pom.xmllas dependencias, encontrará que introduce las siguientes dependencias:
Insertar descripción de la imagen aquí

Introduce las dependencias de spring-weby spring-webmvc, razón por la cual nuestro proyecto aún puede usar springMVClas anotaciones sin depender de estos dos paquetes.

En cuanto a las dependencias spring-boot-starter-tomcat, básicamente podemos confirmar las dependencias internas a partir de sus nombres tomcat, para que nuestro proyecto pueda comenzar normalmente.

Conclusión: si necesita utilizar tecnología en el futuro, solo necesita introducir las dependencias iniciales correspondientes a la tecnología.

1.2.1.3 Resumen

inicio

  • SpringBootNombres de proyectos comunes en, que definen todas las coordenadas del proyecto utilizadas por el proyecto actual para lograr el propósito de reducir la configuración de dependencia.

padre

  • Todos SpringBootlos proyectos que se heredarán definen varios números de versión de coordenadas (gestión de dependencias, no dependencias) para lograr el propósito de reducir los conflictos de dependencia.

  • spring-boot-starter-parentspring-boot-starter-parentHay un total de 57 versiones de coordenadas diferentes entre (2.5.0) y (2.4.6).

desarrollo real

  • Cuando use coordenadas arbitrarias, solo escriba G y A en GAV, SpringBoot proporciona V

    G: ID de grupo

    A: ID de artefacto

    V: versión

  • Si se produce un error de coordenadas, especifique la versión nuevamente (tenga cuidado con los conflictos de versiones)

1.2.2 Inicio del programa

Cada programa creado SpringBootcontiene una clase similar a la siguiente, a la que llamamos clase bootstrap.

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

Aviso:

  • SpringBootAl crear un proyecto, utilice el método de empaquetado en frasco.

  • SpringBootLa clase de arranque es el punto de entrada del proyecto y mainel proyecto se puede iniciar ejecutando el método

    Debido a que pom.xmlconfiguramos spring-boot-starter-webla dependencia en y la dependencia conoce sus dependencias a través del aprendizaje previo tomcat, el mainmétodo de ejecución se puede usar para tomcatiniciar nuestro proyecto.

1.2.3 Cambiar de servidor web

Ahora que estamos usando el servidor para iniciar el proyecto tomcat, ¿podemos usar el servidor tomcaten lugar jettydel servidor? jettyEn nuestra mavenversión avanzada, hablaremos sobre mavenel servidor utilizado por el servidor privado. Para cambiar de servidor, debe excluir el servidor webpredeterminado . ¿Cómo excluirlo? tomcatUsar exclusionetiqueta

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>

¿Ahora podemos ejecutar la clase bootstrap? Intente ejecutarlo. La información del registro impreso es la siguiente:
Insertar descripción de la imagen aquí

El programa se detuvo directamente, ¿por qué? Esto se debe a que si excluye tomcatel servidor, no habrá ningún servidor en el programa. Por lo tanto, no solo se debe tomcatexcluir el servidor en este momento, sino que jettytambién se debe introducir el servidor. porque la dependencia inicial pom.xmldejetty

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

A continuación, ejecute la clase de arranque nuevamente y podrá ver en la información de registro que se utiliza jettyel servidor .
Insertar descripción de la imagen aquí

resumen:

Al cambiar de servidor, no es difícil encontrar que cuando usamos SpringBoottecnologías de cambio, solo necesitamos importar las dependencias iniciales de la tecnología.

2 archivos de configuración

2.1 Formato del archivo de configuración

El número de puerto predeterminado cuando iniciamos el servidor ahora es 8080y la ruta de acceso se puede escribir como

http://localhost:8080/books/1

En el entorno en línea, todavía queremos cambiar el número de puerto para 80que no necesitemos escribir el número de puerto al acceder, de la siguiente manera

http://localhost/books/1

¿Y SpringBootcómo modificar el programa? SpringBootProporciona una variedad de métodos de configuración de propiedades.

  • application.properties

    server.port=80
    
  • application.yml

    server:
    	port: 81
    
  • application.yaml

    server:
    	port: 82
    

Nota: SpringBootEl nombre del archivo de configuración del programa debe ser application, solo el nombre del sufijo es diferente.

2.1.1 Preparación del entorno

Cree un nuevo proyecto springboot_02_base_configpara demostrar diferentes archivos de configuración. El entorno del proyecto es exactamente el mismo que el caso introductorio y la estructura es la siguiente:
Insertar descripción de la imagen aquí

com.itheima.controllerCree un controlador nombrado bajo el paquete en el proyecto BookController. El contenido es el siguiente:

@RestController
@RequestMapping("/books")
public class BookController {
    
    

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
    
    
        System.out.println("id ==> "+id);
        return "hello , spring boot!";
    }
}

2.1.2 Demostración de diferentes archivos de configuración

  • archivo de configuración application.properties

Ahora necesitamos configurar, el archivo coincidente debe colocarse resourcesen el directorio, y hay un application.propertiesarchivo de configuración nombrado en este directorio, podemos modificar el número de puerto en el archivo de configuración, escribir en el archivo de configuración port, Idease le solicitará lo siguiente
Insertar descripción de la imagen aquí

application.propertiesEl contenido del archivo de configuración es el siguiente:

server.port=80

Cuando se inicia el servicio, la información de registro se imprimirá en la consola. En la información de registro, puede ver que el número de puerto vinculado ha sido modificado.
Insertar descripción de la imagen aquí

  • archivo de configuración application.yml

Elimine application.propertiesel contenido del archivo de configuración. resourcesCree un archivo de configuración con el nombre siguiente application.ymly escriba el elemento de configuración del número de puerto en el archivo en el siguiente formato:

server:
	port: 81

Nota: Después :, se debe agregar un espacio antes de los datos.

También hay una función de aviso en ymlel archivo de configuración, también podemos escribir en el archivo port, y luego idease le solicitará y escribirá en el formato anterior.
Insertar descripción de la imagen aquí

Inicie el servicio y podrá ver en la consola que el número de puerto vinculado es81
Insertar descripción de la imagen aquí

  • archivo de configuración application.yaml

Elimine application.ymlel archivo de configuración y application.propertiesel contenido del archivo de configuración, y luego cree un archivo de configuración con el resourcesnombre . El contenido de la configuración es el mismo que el contenido del archivo de configuración con application.yamlel sufijo , pero se utiliza un sufijo diferente.yml

application.yamlEl contenido del archivo de configuración es el siguiente:

server:
	port: 83

Inicie el servicio y podrá ver el número de puerto vinculado en la consola.
Insertar descripción de la imagen aquí

Nota: Si no aparece ningún mensaje en el archivo de cooperación, puede utilizar el siguiente método para resolver el problema

  • Haga clic Filepara seleccionarProject Structure
    Insertar descripción de la imagen aquí

  • Aparecerá la siguiente ventana, haga clic en el cuadro rojo marcado en la imagen para seleccionar
    Insertar descripción de la imagen aquí

  • Después de la operación anterior, aparecerá la siguiente ventana
    Insertar descripción de la imagen aquí

  • Haga clic en el icono en la imagen de arriba +para que aparezca el archivo de configuración para seleccionar el módulo.
    Insertar descripción de la imagen aquí

  • Después de seguir los pasos anteriores, verá la siguiente interfaz. propertiesHay un archivo coincidente para el tipo y ymaldos archivos de configuración para el tipo
    Insertar descripción de la imagen aquí

2.1.3 Prioridad de tres archivos coincidentes

Configure diferentes números de puerto en los tres archivos de cooperación, inicie el servicio y verifique los números de puerto vinculados. De esta manera puedes ver qué archivo de configuración tiene mayor prioridad.

application.propertiesEl contenido del archivo es el siguiente:

server.port=80

application.ymlEl contenido del archivo es el siguiente:

server:
	port: 81

application.yamlEl contenido del archivo es el siguiente:

server:
	port: 82

Inicie el servicio y podrá ver el número de puerto utilizado en la consola 80. La descripción application.propertiestiene la máxima prioridad.

Comente application.propertiesel contenido del archivo de configuración. Inicie el servicio nuevamente, puede ver el número de puerto utilizado en la consola 81, lo que indica que application.ymlel archivo de configuración es la segunda prioridad.

A partir de los resultados de la verificación anterior, se puede determinar que las prioridades de los tres archivos de configuración son:

application.properties> application.yml>application.yaml

Aviso:

  • SpringBootEl archivo de configuración principal se llamaapplication

  • SpringBootHay demasiados atributos integrados y todos los atributos se modifican juntos. Al usarlo, modifique los atributos mediante la tecla de solicitud + palabras clave.

    Por ejemplo, cuando desee establecer el nivel de registro, puede escribirlo en el archivo de configuración loggingy se le solicitará. El contenido de la configuración es el siguiente.

    logging:
      level:
        root: info
    

2.2 formato yaml

Hablamos de tres tipos diferentes de archivos de configuración anteriormente y propertieshemos estudiado los tipos de archivos coincidentes antes. A continuación, nos centraremos en yamlel tipo de archivos de configuración.
Insertar descripción de la imagen aquí

YAML (YAML Ain't Markup Language) , un formato de serialización de datos . Los archivos de configuración en este formato se han vuelto dominantes en los últimos años, por lo que este archivo de configuración tiene algunas ventajas sobre los archivos de configuración utilizados en los primeros días. Veamos primero los archivos de configuración utilizados antes.

Al principio utilizamos xmlel siguiente formato:

<enterprise>
    <name>itcast</name>
    <age>16</age>
    <tel>4006184000</tel>
</enterprise>

propertiesEl archivo de configuración de tipo es el siguiente

enterprise.name=itcast
enterprise.age=16
enterprise.tel=4006184000

yamlEl contenido del archivo de configuración de tipo es el siguiente

enterprise:
	name: itcast
	age: 16
	tel: 4006184000

ventaja:

  • fácil de leer

    yamlLos archivos de configuración de tipos xmlson más fáciles de leer y tienen una estructura más clara que los archivos de configuración de tipos.

  • Fácil de interactuar con lenguajes de scripting

  • Tomar los datos como núcleo, centrarse en los datos e ignorar el formato.

    yamlMás centrado en datos y xmlformato

Extensión de archivo YAML:

  • .yml(convencional)
  • .yaml

Los dos nombres de sufijo anteriores son aceptables y se utilizará el que se utilizará más en el futuro yml.

2.2.1 Reglas gramaticales

  • Distingue mayúsculas y minúsculas

  • Utilice varias líneas para describir la relación jerárquica del atributo y utilice dos puntos al final de cada línea.

  • Utilice sangría para indicar relaciones jerárquicas, alinee a la izquierda del mismo nivel y solo se permiten espacios (la tecla Tab no está permitida)

    No importa el número de espacios, siempre y cuando se asegure la alineación izquierda del mismo nivel.

  • Agregue un espacio delante del valor del atributo (use dos puntos + espacio como separación entre el nombre del atributo y el valor del atributo)

  • # representa comentarios

Regla básica: los datos deben estar separados por espacios y dos puntos

Para datos de matriz, se utiliza un signo menos como símbolo de inicio de datos debajo de la posición de escritura de datos. Se escribe un dato en cada línea y el signo menos está separado de los datos por un espacio, por ejemplo.

enterprise:
  name: itcast
  age: 16
  tel: 4006184000
  subject:
    - Java
    - 前端
    - 大数据

2.3 Lectura de datos del archivo de configuración yaml

2.3.1 Preparación del entorno

Cree un nuevo proyecto llamado con la siguiente springboot_03_read_dataestructura de directoriosSpringBoot
Insertar descripción de la imagen aquí

Cree un controlador nombrado en com.itheima.controllerel paquete BookControllercon el siguiente contenido:

@RestController
@RequestMapping("/books")
public class BookController {
    
    

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
    
    
        System.out.println("id ==> "+id);
        return "hello , spring boot!";
    }
}

com.itheima.domainCree una clase de entidad nombrada en el paquete, etc. Enterprise, que se utilizará para encapsular datos, el contenido es el siguiente

public class Enterprise {
    
    
    private String name;
    private int age;
    private String tel;
    private String[] subject;
    
    //setter and getter
    
    //toString
}

resourcesCree un archivo de configuración denominado en application.yml, con diferentes datos configurados en él. El contenido es el siguiente

lesson: SpringBoot

server:
  port: 80

enterprise:
  name: itcast
  age: 16
  tel: 4006184000
  subject:
    - Java
    - 前端
    - 大数据

2.3.2 Leer datos de configuración

2.3.2.1 Usar la anotación @Value

Utilice @Value("表达式")anotaciones para leer datos del archivo coincidente. El método de referencia para leer nombres de atributos en las anotaciones es:${一级属性名.二级属性名……}

Podemos BookControllerusar @Valueanotaciones para recuperar los datos del archivo coincidente, de la siguiente manera

@RestController
@RequestMapping("/books")
public class BookController {
    
    
    
    @Value("${lesson}")
    private String lesson;
    @Value("${server.port}")
    private Integer port;
    @Value("${enterprise.subject[0]}")
    private String subject_00;

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
    
    
        System.out.println(lesson);
        System.out.println(port);
        System.out.println(subject_00);
        return "hello , spring boot!";
    }
}
2.3.2.2 Objeto de entorno

Los datos leídos en el método anterior están particularmente dispersos. SpringBootTambién puede utilizar @Autowiredel Environmentobjeto de inyección de anotaciones para leer los datos. Este método SpringBootencapsulará todos los datos del archivo de configuración en Environmentun objeto. Si necesita usar qué datos, solo necesita llamar al método Environmentdel objeto getProperty(String name)para obtenerlos . El código específico es el siguiente:

@RestController
@RequestMapping("/books")
public class BookController {
    
    
    
    @Autowired
    private Environment env;
    
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
    
    
        System.out.println(env.getProperty("lesson"));
        System.out.println(env.getProperty("enterprise.name"));
        System.out.println(env.getProperty("enterprise.subject[0]"));
        return "hello , spring boot!";
    }
}

Nota: De esta manera, el marco contiene una gran cantidad de datos, que rara vez utilizamos en el desarrollo.

2.3.2.3 Objetos personalizados

SpringBootTambién proporciona una forma de encapsular los datos del archivo de configuración en nuestro objeto de clase de entidad personalizada. Las operaciones específicas son las siguientes:

  • beanDeje la creación de clases de entidad a Springla administración.

    @ComponentAgregar anotaciones a la clase.

  • Utilice @ConfigurationPropertiesla anotación para cargar el archivo de configuración.

    prefixTambién puede utilizar el atributo en esta anotación para especificar que solo se carguen los datos con el prefijo especificado.

  • Inyectar BookController_

El código específico es el siguiente:

EnterpriseEl contenido de la clase de entidad es el siguiente:

@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
    
    
    private String name;
    private int age;
    private String tel;
    private String[] subject;

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public String getTel() {
    
    
        return tel;
    }

    public void setTel(String tel) {
    
    
        this.tel = tel;
    }

    public String[] getSubject() {
    
    
        return subject;
    }

    public void setSubject(String[] subject) {
    
    
        this.subject = subject;
    }

    @Override
    public String toString() {
    
    
        return "Enterprise{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", tel='" + tel + '\'' +
                ", subject=" + Arrays.toString(subject) +
                '}';
    }
}

BookControllerEl contenido es el siguiente:

@RestController
@RequestMapping("/books")
public class BookController {
    
    
    
    @Autowired
    private Enterprise enterprise;

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
    
    
        System.out.println(enterprise.getName());
        System.out.println(enterprise.getAge());
        System.out.println(enterprise.getSubject());
        System.out.println(enterprise.getTel());
        System.out.println(enterprise.getSubject()[0]);
        return "hello , spring boot!";
    }
}

Aviso:

Al utilizar el tercer método, aparece el siguiente mensaje de advertencia en la clase de entidad
Insertar descripción de la imagen aquí

La solución a esta advertencia es pom.xmlagregar las siguientes dependencias en

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

2.4 Configuración multientorno

En el futuro, en el trabajo, las configuraciones del entorno de desarrollo, el entorno de prueba y el entorno de producción definitivamente serán diferentes. Por ejemplo, durante la etapa de desarrollo, lo instalaremos en nuestra propia computadora y lo conectaremos a nuestra propia computadora. Después de desarrollar el proyecto, debemos conectarnos mysql. mysqlEsta configuración cambia la configuración del entorno al entorno en línea.

Insertar descripción de la imagen aquí

Modificar configuraciones de un lado a otro puede ser problemático, pero SpringBootproporciona a los desarrolladores configuraciones rápidas para múltiples entornos. Cuando necesita cambiar de entorno, solo necesita cambiar una configuración. Los diferentes tipos de archivos de configuración tienen diferentes configuraciones para el desarrollo multientorno. A continuación, se explican los diferentes tipos de archivos de configuración.

2.4.1 archivo yaml

application.ymlÚselo para ---separar diferentes configuraciones, el contenido es el siguiente

#开发
spring:
  profiles: dev #给开发环境起的名字
server:
  port: 80
---
#生产
spring:
  profiles: pro #给生产环境起的名字
server:
  port: 81
---
#测试
spring:
  profiles: test #给测试环境起的名字
server:
  port: 82
---

En la configuración anterior spring.profiles, se utiliza para nombrar diferentes configuraciones. ¿Y cómo saber SpringBootqué configuración usar? Puede utilizar la siguiente configuración para habilitar ambas configuraciones.

#设置启用的环境
spring:
  profiles:
    active: dev  #表示使用的是开发环境的配置

En resumen, application.ymlel contenido del archivo de configuración es el siguiente

#设置启用的环境
spring:
  profiles:
    active: dev

---
#开发
spring:
  profiles: dev
server:
  port: 80
---
#生产
spring:
  profiles: pro
server:
  port: 81
---
#测试
spring:
  profiles: test
server:
  port: 82
---

Aviso:

Los elementos de configuración utilizados para nombrar las diferentes configuraciones en la configuración anterior spring.profilesestán obsoletos. El último elemento de configuración utilizado para nombrar es

#开发
spring:
  config:
    activate:
      on-profile: dev

2.4.2 archivo de propiedades

propertiesLos tipos de archivos de configuración necesitan definir diferentes archivos de configuración para configurar múltiples entornos.

  • application-dev.propertiesEs el archivo de configuración del entorno de desarrollo. Configuramos el número de puerto en este archivo como80

    server.port=80
    
  • application-test.propertiesEs el archivo de configuración del entorno de prueba. Configuramos el número de puerto en este archivo como81

    server.port=81
    
  • application-pro.propertiesEs el archivo de configuración para el entorno de producción. Configuramos el número de puerto en este archivo como82

    server.port=82
    

SpringBootDe forma predeterminada, solo se cargará el archivo de configuración nombrado application.properties, por lo que debe application.propertiesestablecer qué archivo de configuración habilitar en el archivo de configuración. La configuración es la siguiente:

spring.profiles.active=pro

2.4.3 Configuración de los parámetros de inicio de la línea de comando

SpringBootLos programas desarrollados utilizando se empaquetarán en el futuro jary java -jar xxx.jarlos servicios se iniciarán mediante . Entonces surge la pregunta: ¿cómo cambiar de entorno? Porque el archivo de configuración está incluido en el paquete jar.

Sabemos que jarun paquete es en realidad un paquete comprimido, que puede descomprimirse, modificarse y finalmente convertirse en un paquete jar. Este método es obviamente un poco problemático, pero SpringBootproporciona jaruna manera de configurar un entorno específico en tiempo de ejecución, de la siguiente manera

java –jar xxx.jar –-spring.profiles.active=test

Entonces, ¿se puede modificar temporalmente el número de puerto de esta manera? También es posible, puedes hacerlo de las siguientes maneras

java –jar xxx.jar –-server.port=88

Insertar descripción de la imagen aquí

Por supuesto, también puede establecer varias configuraciones al mismo tiempo, como especificar qué configuración de entorno habilitar y especificar temporalmente el puerto, de la siguiente manera

java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test

Después de la prueba, encontrará que el número de puerto establecido en la línea de comando tiene una alta prioridad (es decir, se utiliza el número de puerto establecido en la línea de comando). La prioridad configurada en realidad se explica en el sitio web oficial. Ver SpringBoot:
SpringBoot prioridad de configuración del sitio web oficial

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config

Después de ingresar al sitio web anterior, verá la siguiente página
Insertar descripción de la imagen aquí

Si se utilizan varios métodos para hacer coincidir el mismo elemento de configuración, entrará en vigor el que tenga mayor prioridad.

2.5 Clasificación del archivo de configuración

Insertar descripción de la imagen aquí

Existe un escenario en el que necesitamos que los evaluadores realicen pruebas después de completar el desarrollo. Dado que muchas configuraciones del entorno de prueba y el entorno de desarrollo son diferentes, los evaluadores deben modificar temporalmente muchas configuraciones cuando ejecutan nuestro proyecto, de la siguiente manera

java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……

En respuesta a esta situación, SpringBootse definen diferentes ubicaciones de ubicación de los archivos de configuración y las prioridades de ubicación en diferentes ubicaciones son diferentes.

SpringBootUbicación de ubicación del archivo de configuración de nivel intermedio 4:

  • 1.: classpath: aplicación.yml
  • 2: classpath: config/application.yml
  • Nivel 3: archivo: aplicación.yml
  • 4. Archivo: config/application.yml
    Insertar descripción de la imagen aquí

ilustrar: Cuanto mayor sea el nivel, mayor será la prioridad.

2.5.1 Demostración del código

Aquí solo demostramos la prioridad de los diferentes niveles de ubicación del archivo de configuración.

2.5.1.1 Preparación del entorno

Cree un proyecto llamado con la siguiente springboot_06_config_fileestructura de directoriosSpringBoot

Insertar descripción de la imagen aquí

resourcesCree un directorio denominado en config, cree un archivo de configuración en el directorio application.ymly establezca el número de puerto en el archivo de configuración 81, el contenido es el siguiente

server:
  port: 81

En el archivo de configuración resourcescreado application.ymly establecido el número de puerto en 80, el contenido es el siguiente

server:
  port: 80
2.5.1.2 Verificar los niveles de prioridad 1 y 2

Ejecute la clase de inicio de inicio y podrá ver la siguiente información de registro en la consola
Insertar descripción de la imagen aquí

De este resultado se puede concluir queLos archivos de configuración bajo el classpath configtienen prioridad sobre los archivos de configuración bajo el classpath.

2.5.1.3 Verificar los niveles de prioridad 2 y 4

Para verificar el nivel 4, siga estos pasos para completar

  • Empaquetar el proyecto en jarpaquetes.

    Haga clic en el proyecto packagepara jarempaquetar
    Insertar descripción de la imagen aquí

  • jarEncuentre la ubicación del paquete en su disco duro
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí

  • Cree una carpeta donde jarse encuentre el paquete config, cree un archivo de configuración en esta carpeta application.ymly establezca el número de puerto en el archivo de coordinación en82
    Insertar descripción de la imagen aquí

  • Ejecute el programa usando el siguiente comando en la línea de comando

    java -jar springboot_06_config_file-0.0.1-SNAPSHOT.jar
    

    La información de registro después de la ejecución es la siguiente
    Insertar descripción de la imagen aquí

    De este resultado se puede concluir queconfigArchivos de configuración en el archivo: tienen prioridad sobre los archivos de configuración en el classpath.

Aviso:

Hay un error en la versión 2.5.0 de SpringBoot, cuando usamos esta versión, necesitamos crear una carpeta con cualquier nombre en el directorio jardonde estamos ubicados.config

3 SpringBoot integra junit

Revisar Springla integraciónjunit

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class UserServiceTest {
    
    
    
    @Autowired
    private BookService bookService;
    
    @Test
    public void testSave(){
    
    
        bookService.save();
    }
}

Utilice @RunWithanotaciones para especificar el corredor y utilice @ContextConfigurationanotaciones para especificar la clase de configuración o el archivo de configuración. La SpringBootintegración junites particularmente sencilla y se puede completar en los siguientes tres pasos:

  • SpringBootTestAgregar anotaciones a la clase de prueba.
  • Úselo para @Autowiredinyectar el recurso a probar.
  • Definir métodos de prueba para realizar pruebas.

3.1 Preparación del entorno

Cree un proyecto llamado. La estructura del directorio del proyecto es la springboot_07_testsiguienteSpringBoot
Insertar descripción de la imagen aquí

Cree una interfaz com.itheima.serviceenBookService

public interface BookService {
    
    
    public void save();
}

Cree una clase en com.itheima.service.implel paquete BookServiceImply haga que implemente BookServicela interfaz, el contenido es el siguiente

@Service
public class BookServiceImpl implements BookService {
    
    
    @Override
    public void save() {
    
    
        System.out.println("book service is running ...");
    }
}

3.2 Clases de prueba de escritura

test/javaCree un paquete en com.itheima, cree una clase de prueba en este paquete e BookServiceinyecte en la clase de prueba

@SpringBootTest
class Springboot07TestApplicationTests {
    
    

    @Autowired
    private BookService bookService;

    @Test
    public void save() {
    
    
        bookService.save();
    }
}

==Nota:==El paquete donde se encuentra la clase de arranque aquí debe ser el paquete donde se encuentra la clase de prueba y sus subpaquetes.

Por ejemplo:

  • El paquete donde se encuentra la clase bootstrap escom.itheima
  • El paquete donde se encuentra la clase de prueba escom.itheima

Si no se cumple este requisito, debe @SpringBootTestutilizar classesel atributo para especificar el objeto de código de bytes de la clase de inicio al utilizar anotaciones. como@SpringBootTest(classes = Springboot07TestApplication.class)

4 SpringBoot integra mybatis

4.1 Revisión de la integración de Mybatis en Spring

SpringLa integración Mybatisrequiere definir muchas clases de configuración

  • SpringConfigClase de configuración

    • Importar JdbcConfigclase de configuración

    • Importar MybatisConfigclase de configuración

      @Configuration
      @ComponentScan("com.itheima")
      @PropertySource("classpath:jdbc.properties")
      @Import({
              
              JdbcConfig.class,MyBatisConfig.class})
      public class SpringConfig {
              
              
      }
      
      
  • JdbcConfigClase de configuración

  • Definir fuente de datos (cargar elementos de configuración de propiedades: controlador, URL, nombre de usuario, contraseña)

    public class JdbcConfig {
          
          
        @Value("${jdbc.driver}")
        private String driver;
        @Value("${jdbc.url}")
        private String url;
        @Value("${jdbc.username}")
        private String userName;
        @Value("${jdbc.password}")
        private String password;
    
        @Bean
        public DataSource getDataSource(){
          
          
            DruidDataSource ds = new DruidDataSource();
            ds.setDriverClassName(driver);
            ds.setUrl(url);
            ds.setUsername(userName);
            ds.setPassword(password);
            return ds;
        }
    }
    
  • MybatisConfigClase de configuración

    • definiciónSqlSessionFactoryBean

    • Definir la configuración de mapeo

      @Bean
      public MapperScannerConfigurer getMapperScannerConfigurer(){
              
              
          MapperScannerConfigurer msc = new MapperScannerConfigurer();
          msc.setBasePackage("com.itheima.dao");
          return msc;
      }
      
      @Bean
      public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
              
              
          SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
          ssfb.setTypeAliasesPackage("com.itheima.domain");
          ssfb.setDataSource(dataSource);
          return ssfb;
      }
      
      

4.2 SpringBoot integra mybatis

4.2.1 Crear módulos

  • Cree un nuevo módulo, seleccione Spring Initializry configure información básica sobre el módulo.
    Insertar descripción de la imagen aquí

  • Seleccione el conjunto de tecnologías que utilizará el módulo actual (MyBatis, MySQL)

Insertar descripción de la imagen aquí

4.2.2 Definir clases de entidad

com.itheima.domainDefina la clase de entidad en el paquete , Bookel contenido es el siguiente

public class Book {
    
    
    private Integer id;
    private String name;
    private String type;
    private String description;
    
    //setter and  getter
    
    //toString
}

4.2.3 Definir interfaz dao

com.itheima.daoDefina la interfaz debajo del paquete , BookDaoel contenido es el siguiente

public interface BookDao {
    
    
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

4.2.4 Definir clases de prueba

test/javaDefina el paquete en este com.itheimapaquete y pruebe la clase en este paquete, el contenido es el siguiente

@SpringBootTest
class Springboot08MybatisApplicationTests {
    
    

	@Autowired
	private BookDao bookDao;

	@Test
	void testGetById() {
    
    
		Book book = bookDao.getById(1);
		System.out.println(book);
	}
}

4.2.5 Configuración de escritura

Nuestro código no especifica a qué base de datos conectarse, cuál es el nombre de usuario y cuál es la contraseña. Por lo tanto, esta parte debe SpringBootcoincidir en el archivo de configuración.

application.ymlConfigure el siguiente contenido en el archivo de configuración

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: root

4.2.6 Pruebas

Cuando ejecutamos el método de prueba, veremos el siguiente mensaje de error

Insertar descripción de la imagen aquí

El mensaje de error muestra que no hay ningún tipo Springen el contenedor . ¿Por qué pasó esto?BookDaobean

La razón es que Mybatisse escaneará la interfaz y el objeto de código que crea la interfaz se entregará a la Springadministración, pero ahora no dice Mybatisqué daointerfaz es. Para resolver este problema, necesitamos BookDaousarlo en la interfaz @Mapper. BookDaoLa interfaz se ha mejorado para

@Mapper
public interface BookDao {
    
    
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

Aviso:

SpringBootSi la versión es inferior a 2.4.3 (no incluida) y la versión del controlador Mysql es superior a 8.0, debe configurar la zona horaria en la cadena de conexión URL
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCo configurar la zona horaria en el lado de la base de datos MySQL para resolver este problema.

4.2.7 Uso de la fuente de datos Druida

Ahora no hemos especificado la fuente de datos. SpringBootHay una fuente de datos predeterminada. También podemos especificar Druidla fuente de datos y seguir los siguientes pasos para lograrlo.

  • Importar Druiddependencias

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.16</version>
    </dependency>
    
  • En application.ymlel archivo de configuración configuración

    Puede spring.datasource.typeconfigurar qué fuente de datos utilizar. El contenido del archivo de configuración se puede mejorar para

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
        username: root
        password: root
        type: com.alibaba.druid.pool.DruidDataSource
    

5 casos

SpringBootEste es el final del estudio. A continuación, utilizaremos SSMel caso de integrar los tres marcos principales que hicimos durante el estudio SpringBootpara implementarlo. Para completar este caso, básicamente copiamos lo que hicimos antes y lo modificamos en SpringBoot. Se completa principalmente a partir de las siguientes partes.

  1. pom.xml

    Configurar dependencias iniciales y coordenadas de recursos necesarios (druida)

  2. aplicación.yml

    Establecer fuente de datos, puerto, etc.

  3. Clase de configuración

    eliminar todos

  4. dao

    Configurar @Mapper

  5. clase de prueba

  6. página

    Colóquelo en el directorio estático debajo del directorio de recursos.

5.1 Crear proyecto

Cree SpringBootun proyecto. Al crear un proyecto, debe verificar web, y la estructura del mysqldirectorio mybatisdel proyecto es la siguiente
Insertar descripción de la imagen aquí

Dado que se utiliza en nuestro proyecto Druid, necesitamos importar Druidlas coordenadas de

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

5.2 Copia de código

Copie el código y el código de prueba springmvc_11_pageen el proyecto javajunto con el paquete al springboot_09_ssmproyecto y cópielo como se muestra a continuación.

Insertar descripción de la imagen aquí

El contenido que debe modificarse es el siguiente:

  • Springmvc_11_pageDebajo configdel paquete hay clases de configuración, y SpringBootel proyecto no necesita estas clases de configuración, por lo que se pueden eliminar directamente.

  • daoAl copiar la interfaz del paquete al proyecto, debe agregar anotaciones springboot_09-ssma la interfaz.@Mapper

ejemplo:
Insertar descripción de la imagen aquí

  • BookServiceTestLas pruebas deben cambiarse a SpringBootintegradas.junit

    @SpringBootTest
    public class BookServiceTest {
          
          
    
        @Autowired
        private BookService bookService;
    
        @Test
        public void testGetById(){
          
          
            Book book = bookService.getById(2);
            System.out.println(book);
        }
    
        @Test
        public void testGetAll(){
          
          
            List<Book> all = bookService.getAll();
            System.out.println(all);
        }
    }
    

5.3 Archivo de configuración

application.ymlEl siguiente contenido debe configurarse en el archivo de configuración.

  • Número de puerto de servicio
  • Información de conexión a la base de datos
  • fuente de datos
server:
  port: 80

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db #?servierTimezone=UTC
    username: root
    password: root

5.4 Recursos estáticos

SpringBootNo hay ningún webappdirectorio en el programa, entonces SpringBoot, ¿dónde se deben colocar los recursos estáticos en el programa?

Los recursos estáticos deben colocarse resourcesdebajo static, como se muestra en la siguiente figura
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/CSDN_Admin0/article/details/131694679
Recomendado
Clasificación