En el proceso de transferencia del proyecto SpringMVC al SpringBoot, las siguientes cosas se hicieron principalmente
Además de introducir qué y cómo hacerlo, este artículo tendrá muchas tonterías innecesarias. Para algunas discusiones sobre el principio, también debe saber la razón.
Configuración de perfil
En los proyectos de primavera tradicionales, el método de configuración de múltiples perfiles es escribir múltiples perfiles en el archivo pom.xml y luego precargar el entorno de perfil seleccionado ejecutando un archivo maven antes de comenzar el proyecto. Después de cargar, al ejecutar el proyecto, decidirá qué archivo .properties se cargará en la variable global en función del entorno cargado.
Y administrar múltiples perfiles en Springboot es muy simple.
Puede seleccionar perfil al ejecutar el paquete jar usando la línea de comando
java -jar ejemplo.jar --spring.profiles.active = test
O configurarlo en la aplicación de configuración global.properties
Agregar Spring.Profiles.active = Test in Application.Properties
Ambos métodos anteriores pueden iniciar el perfil de "prueba", el primero tiene una mayor prioridad en la ejecución que la segunda.
(Por cierto, en Springboot, estos dos métodos usan esencialmente el método "Configuración externa" para editar y reemplazar el entorno)
Además, cada perfiles independientes se configuran en el formato "Application-XXX.Properties" para cada entorno diferente, por ejemplo:
Cuando necesitamos probar si el perfil se carga normalmente, podemos escribirlo en el archivo .properties correspondiente
Server.port = 9080
Puede ver si este puerto se ha iniciado en el inicio.
Aquí puede mencionar el orden en el que Springboot carga archivos de configuración
Las variables globales se leen del archivo de propiedades
En la sección anterior, escribimos la configuración de propiedades para diferentes entornos. Aquí escribiremos sobre si estas propiedades se escriben en variables globales, lo cual es conveniente para llamadas directas en otros lugares más adelante.
/*** Variable global*/public class Global {public static String EjemperhPath; @Value ("$ {ejemplo_path}") public void setExamplePath (string ejemplo) {global.examplePath = ejemplopath; }} De esta manera, pondremos el archivo .properties en el
ejemplo_path = http: // localhost: 9090
Esta propiedad se lee en la variable global.
Fuente de datos y configuración de mybatis
En el proyecto de primavera tradicional, use mybatis para conectarse a la base de datos
Todo esto está configurado en el archivo de configuración XML, que es bastante engorroso. En Springboot, intente evitar dicha configuración XML.
MyBatis ahora ha proporcionado soporte para Springboot. Solo necesitamos agregar la dependencia mybatis-spring-boot-starter, y nos hará lo siguiente:
Entonces, en la configuración mybatis de Springboot, necesitamos hacer lo siguiente:
Complete la información de la base de datos en la aplicación- {perfil} .properties, por ejemplo:
spring.datasource.url = jdbc: oracle: delgado:@// localhost: 1234/ejemplospring.datasource.username = rootspring.datasource.password = 123456spring.datas ource.driver-class-name = oracle.jdbc.driver.oracledriverspring.datasource.maxactive = 10spring.datasource.maxidle = 5spring.datasource.maxwait = -1
De esta manera, registramos el DataSource Bean en el contexto de primavera.
Cree un archivo mybatisconfig y reemplace XML con Java:
/*** Creado por Wutaoyu el 2017/12/7. */@Configuration@enableTransactionManagement@mapperscan ("com.example.db.dao") clase pública mybatisconfig {@aUtoWired DataSource DataSource; @Bean (name = "SqlSessionFactory") public sqlSessionFactory sqlSessionFactoryBean () {sqlSessionFactoryBean sqlSession = new SqlSessionFactoryBean (); sqlsession.setDataSource (DataSource); Pruebe {// agregue el directorio XML ResourcePatternResolver Resolver = new PathMatchingResourCePternResolver (); sqlsession.setMapperLocations (resolver.getResources ("classpath: mapping/*. xml")); return sqlsession.getObject (); } catch (Exception e) {E.PrintStackTrace (); tirar nueva runtimeException (e); }} @Bean public sqlSessionTemplate sqlSessionTemplate (sqlSessionFactory sqlSessionFactory) {return new sqlSessionTemplate (sqlSessionFactory); } @Bean public PlatformTransactionManager AnnotationDriventRansactionManager () {return New DataSourCetransactionManager (DataSource); } @Bean (name = "ExpleseQuence") Public oraclesquequencemaxvalueIncrementer ESPPLESSEQUENCEBean () {oracleseQuencemaxvalueIncrementer ESPPLESSQUENCI ExplesSeQuence.setIncrementername ("Ejemplo_seq"); EXPPLESEQUENCE.SetDataSource (DataSource); devolver ejemplosquence; }} @Mapperscan es escanear el mapeador debajo de este paquete.
Además, la ubicación de mapper.xml aquí es crear una carpeta de mapeo en la carpeta de recursos y colocarla a continuación.
La función aquí es similar a XML. Es describir el método de expresión XML tradicional en archivos .java, e esencialmente inyectar datos de datos paso a paso.
Dado que el ejemplo usa una base de datos Oracle, el último examen de exámenes es un ejemplo para ilustrar cómo agregar una secuencia.
Anotación de interfaces a todos los mapeadores @mapper
Por ejemplo:
@MapperPublic Interface Usermapper {...} Configuración del archivo de registro
Logback admite la configuración externa en forma de propiedades, pero para configuraciones relativamente detalladas, aún es necesario usar la configuración XML.
Para que el archivo XML lea algunas rutas del archivo .properties, configuraciones estáticas que pueden requerir una modificación frecuente, es necesario configurarlo en logback-spring.xml
<Property Resource = "Application.Properties" /> <Property Name = "Log.Root.Level" Value = "$ {log.root.level}" /> <Property name = "log.path" value = "$ {log.path}" /> <Property name = "log.modulename" value = "$ {log.module}" /> De esta manera, puede colocar el archivo Application.Properties en el
log.path =/home/logs/examplelog.root.level = infolog.module = Ejemplo
Léelo en logback-spring.xml y luego llámelo.
Configuración de WebConfig
La función principal de WebConfig es reemplazar Web.xml y Spring-Mvc.xml para una configuración básica.
1. Acerca de Web.xml
Los proyectos de primavera tradicionales configuran un archivo web.xml. La función de este archivo es: cuando colocamos el paquete de guerra en el contenedor de la aplicación (como Tomcat) para que se ejecute, el contenedor cargará filtrar (filtrar), servlet, página de error, bienvenida-archivo-list, oyente (oyente), context-param (parámetros de contexto), rehues de recursos (configuración de recursos) y otras configuraciones de acuerdo con web.xml.
El oyente, incluido el contextloaderListener, se carga aquí para ensamblar automáticamente la información de configuración de ApplicationContext al iniciar el contenedor.
<Oyerer> <Oyerer-class> org.springframework.web.context.contextLoaderListener </oyeyer-class> </oyente>
Este ApplicationContext es el núcleo de Spring IOC (heredado de BeanFactory), y todos los frijoles singleton se instanciarán en este momento.
Además, aquí también se carga un desplazamiento muy importante en SpringMVC, y se determina qué archivo XML configurar el desplazamiento.
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <ar load-on-startup> 1 </load-on-startup> <!-<async-supported> true </async-supported>-> </servlet>
2. Acerca de Spring-Mvc.xml
Spring-MVC.XML es un archivo de configuración SpringMVC. Aquí podemos configurar los frijoles que necesitan ser personalizados, como ViewResolver, MultipartResolver, convertidor de mensajes HTTP, interceptor personalizado, etc.
Todo lo anterior no tiene nada que ver con Springboot, principalmente para saber la razón y por qué. Si no está interesado, puede ignorarlo.
Hablemos de la configuración de SpringBoot. SpringBoot dice que "la convención es mejor que la configuración", lo que significa intentar usar el método acordado, en lugar de la configuración específicamente dirigida (configuración cuando se requiere una configuración especial).
Después de introducir la dependencia de "fuera de la caja" de la WEB Spring-Boot-Starter, la WEB Spring-Boot-Starter contiene una imagen de boot-boot-boot-boot.
Con esta dependencia, puede usar la anotación @enableautOconGuration. Esta anotación adivinará la configuración de resorte que necesita en función de las dependencias introducidas y lo ayudará a configurarla. Debido a que se ha introducido Spring-Boot-Starter-Web, esta anotación configurará la configuración relacionada con la web.
Además, la anotación de @enableautOconGuration se ha incluido en la anotación @SpringBootApplication. Entonces, solo anote @SpringBootApplication en la clase de inicio EjempleerPapLePlication y puede configurar automáticamente la web para configurarla.
Por supuesto, es posible que tengamos algunas configuraciones especiales, y en este momento podemos crear un WebConfig para personalizar
/*** Creado por Wutaoyu el 2017/12/8. */ @ConfigurationPublic Class WebConfig extiende WebMVCConfigurerAdapter {@Override public void ConfigureMessageConverters (list <httpmessageConverter <?>> converters) {converters.add (marshallinghttpmessageConverver ()); } Public MarshallinghttpMessageConverter MarshallinghttpMessageConverter () {MarshallinghttpMessageConverter MarshallinghttpMessageConverter = New MarshallinghtttpMessageConverter (); Lista <Mediatype> MediatyPes = new ArrayList <Mediatype> (); Mediatypes.Add (Mediatype.Text_Xml); Mediatypes.Add (Mediatype.Application_xml); Xstreammarshaller xstreammarshaller = new xStreamMarShaller (); MarshallinghttpMessageConverter. Setsupported Mediatypes (mediatypes); MarshallinghttpMessageConverter.SetMarShaller (xstreammarshaller); marshallinghttpmessageConverter.setUnmarshaller (xstreammarshaller); regreso MarshallinghttpMessageConverter; } // El archivo de configuración cargue @Bean (name = {"multipartResolver"}) public multipartResolver multipartRescartResolver () {commonsMultiparTresolver commonsMultIParTresolver = new CommonsMultiparTresolver (); CommonsMultipARTRESOLVER.SetDefaultEncoding ("UTF-8"); CommonsMultipARTRESOLVER.SetMaxuploadSize (10485760000l); CommonsMultipartResolver.SetMaxinMemorySize (40960); return commonsMultipartResolver; } // Manejo de excepciones @Bean Public ExceptionHandler ExceptionResolver () {ExceptionHandler ExceptionHandler = new ExceptionHandler (); devolver ExceptionHandler; } // interceptor @Override public void addInterceptors (InterceptorRegistry Registry) {Registry.addinterceptor (new Loginterceptor ()). AddPathPatterns ("/**"); super.addinterceptors (registro); }}Hice algunas cosas en este archivo de muestra:
Retire el exceso de inyección de frijoles
Esta es una distracción, pero también es uno de los problemas que realmente encontré.
Cuando realmente ejecutaba el proyecto SpringBoot, encontré algunos problemas que no informaron errores en los proyectos de primavera tradicionales, que son inyecciones innecesarias de frijoles.
En los proyectos de primavera tradicionales, no hay error, pero en los proyectos de trampolín, se informa. Supongo que es porque cuando el método de clase inyectado a Bean se da de una manera relativamente simple, se repetirá con algunos frijoles configurados automáticamente por SpringBoot en sí, y se informará un error.
Por lo tanto, elimine algunos frijoles que no necesitan ser inyectados.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.