Prefacio:
En el pasado, cuando estábamos construyendo un proyecto, construimos todos los paquetes en un proyecto, lo cual fue realmente conveniente al procesar referencias. No se preocupe, algunas cosas no se pueden configurar o leer.
O, separe el paquete en un proyecto o subproyecto. En este momento, el procesamiento de referencia en el proyecto sigue siendo un poco problemático. Sin embargo, los beneficios son más, por lo que ya no lo expresaré.
En Idea, se recomienda utilizar proyectos de construcción múltiples múltiples en lugar del camino en Eclipse. Luego, intente dividir un proyecto SpringBoot en un submódulo para ver cómo funciona.
División del proyecto:
1. Cambios de directorio
2. Proyecto matriz
En teoría, el padre Pom.xml debería ser una restricción en las referencias en proyectos infantiles, principalmente restricciones de versión.
Por lo tanto, en el Pom.xm principal, la gestión de dependencias debe usarse para restringir la versión del paquete JAR en el subproyecto.
Luego, para referencias que sean útiles para algunos subproyectos, puede mencionarlas en el proyecto principal.
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <MoupRoupid> cn.elvinle </groupid> <artifactid> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>parent</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-- Búsqueda de padres desde el repositorio-> </parent> <modules> <smodule> pojo </module> <smodule> web </module> <smodule> dao </module> <smodule> servicio </module> <smodule> simpl </smodule> </modules> <protecties> <jecter.build.sourceiCoding> utf-8 </project.build.sourceNing> <Project.Reporting.outputEncoding> UTF-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> <druid.version> 1.1.3 <//druid.version> <mybatis.boot.starter.version> 1.3.1 </mybatis.boot.starter. <mysql.connector.java.version> 5.1.44 </mysql.connector.java.version> </propiedades> <dependencyManagement> <pendency> <pendency> <MoupRupid> com.alibaba </groupId> <artifactID> druid </artifactid> <verly> $ {druid.version} </versión> <tartifactid> druid </artifactid> <versión> $ {druid.version} </versión> </artifactID> druid </artifactid> <versión> $ {druid.version} </versión> </artifactid> druid </artifactid> <verly> $ {druid.version} </versión> </artifactID> druid </artifactid> <verly> <MoupRid> org.mybatis.spring.boot </groupid> <artifactid> mybatis-spring-boot-starter </artifactid> <versión> $ {mybatis.boot.starter.version} </versión> </dependence> <epardency> <proupid> mysql </groupid> <AtifactId> mysql-connector-java </artifactid> <version> $ {mysql.connector.java.version} </versión> </dependency> </peperspency> </dependenceManagement> < <artifactid> spring-boot-starter-web </artifactid> </pendency> <pendency> <uproupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </arfactid> </pendency> </dependencia> </pendency> </stracting> <glugins> <MoupRid> org.springframework.boot </groupid> <artifactID> spring-boot-saven-plugin </arfactid> </glugin> </glugins> </stract> </proyecto>3. Subproyecto - POJO
3.1 pom.xml
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <entremid> <grupid> cn.elvinle </groupid> <tifactid> <versión> 0.0.1-snapshot </versión> </rent> <proupid> cn.elvinle </proupid> <artifactid> pojo </arfactid> <versión> 0.0.1-snapshot </versions> <packaging> jar </paquete> <name> pojo </name> <cription> Proyecto de demostración para el arranque de primavera </cription> <propiedades> <Project.Build.SourceEncoding> UTF-8 </project.build.SourceEncoding> <Project.Reporting.outputEncoding> Utf-8 </project.Reporting.outputEncoding> <Java.version> 1.8 </Java.Version> </propiences> <11 b. <MoupRid> org.springframework.boot </groupid> <artifactID> spring-boot-saven-plugin </arfactid> </glugin> </glugins> </stract> </proyecto>
Entidad de 3.2 db
paquete cn.elvinle.pojo;/** * @author: Elvin */public class user {private int id; nombre de cadena privada; public int getId () {return id; } public void setid (int id) {this.id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; }}Para el contenido en POJO y DAO, puede usar la ingeniería inversa de MyBatis para generarlo, lo que puede ahorrar muchos problemas.
4. Subproject- Dao
4.1 pom.xml
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <entremid> <grupid> cn.elvinle </groupid> <tifactid> <versión> 0.0.1-snapshot </versión> </rent> <proupid> cn.elvinle </proupid> <artifactid> dao </arfactid> <versión> 0.0.1-snapshot </verversion> <packaging> jar </paquete> <name> dao </name> <cription> Proyecto de demostración para el arranque de primavera </cription> <perties> <Project.Build.SourceEncoding> UTF-8 </project.Build.SourceEncoding> <Project.Reporting.outputEncoding> UTF-8 </project.Reporting.outputEncoding> <Java.version> 1.8 </Java.Version> </propiences> <SPEDENDESS>-<! referencia interna-<Java.Sversion> <Moupid> CN.Elvinle </groupid> <artifactid> pojo </arfactid> <versión> 0.0.1-snapshot </versewer> </pepertency> <!-referencia externa-> <!-https://mvnrepository.com/artifact/com.alibaBa/druid-> <pendency> <proupid> com.aliba </grouphaba </groupaBa </group. <artifactid> druid </artifactid> </pendency> <pendency> <grupid> mysql </groupid> <artifactid> mysql-connector-java </artifactid> </pendency> <pendency> <grupo> org.mybatis.spring.boot </proupid> <AtifactId> myBatis-spring-boot-starter </artifactid> </pendency> </dependence> <1S construye> <glugins> <glugin> <grupoid> org.springframework.boot </supoupid> <artifactid> spring-boot-maven-plugin </artifactid> </glugin> </glugins> </build> </proyect>
4.2 Mapeador
Usermapper.java:
Interfaz pública Usermapper {Lista pública <serem> getAll ();}Usermapper.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.elvinle.dao.mapper.usermapper"> <select id = "getall" resultType = "cn.elvinle.pojo.user"> Seleccionar * del usuario </select> </ mapper>
5. Subproject Service
5.1 pom.xml
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <entremid> <grupid> cn.elvinle </groupid> <tifactid> <versión> 0.0.1-snapshot </versión> </rent> <proupid> cn.elvinle </proupid> <artifactid> servicio </arfactid> <verserse> 0.0.1-snapshot </verse> <packaging> jar </paquete> <name> servicio </name> <scription> Proyecto de demostración para el arranque de primavera </cription> <perties> <Project.Build.SourceEncoding> UTF-8 </project.Build.SourceEncoding> <Project.Reporting.outputEncoding> Utf-8 </project.rePorting.outputEncoding> <Java.version> 1.8 </Java.Version> </propiences> <Spendences> <Spendency> <artifactid> pojo </arfactid> <versever> 0.0.1-snapshot </ververy> </dependence> </pendencs> <1t build> <glugins> <grupoid> org.springframework.boot </proupid> <arifactid> spring-boot-maven -plugin </artifactid> </glugin> </plugins> </build> </build> </build>
5.2 UserService.java
Interfaz pública UserService {Public List <Ser User> getAll ();}6. Subproject - Simple
6.1 pom.xml
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <entremid> <grupid> cn.elvinle </groupid> <tifactid> <versión> 0.0.1-snapshot </versión> </rent> <proupid> cn.elvinle </proupid> <artifactid> simpl </arfactid> <version> 0.0.1-snapshot </verse> <packaging> jar </paquete> <name> simpl </name> <scription> Proyecto de demostración para el arranque de primavera </cripties> <propiencias> <Project.Build.SourceEncoding> UTF-8 </project.Build.SourceEncoding> <Project.Reporting.outputEncoding> Utf-8 </project.rePorting.outputEncoding> <Java.version> 1.8 </Java.Version> </propiences> <Spendences> <Spendency> <artifactid> pojo </artifactid> <ververy> 0.0.1-snapshot </verversion> </pendency> <pendency> <uproupid> cn.elvinle </groupid> <artifactid> servicio </artifactid> <versión> 0.0.1-snapshot </ververence> </dependency> <epelepentency> <grupe> cn..proupid> <artifactId>dao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependency> </dependency> </build> <plugins> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
6.2 usuarios
@ServicePublic Class UsersImpl implementa UserService {@aUtowired Usermapper Usermapper; @Override Public List <Serer> getAll () {System.out.println ("UsersImpl getall"); return usermapper.getAll (); }}7. Subproject - Web
El lugar clave está aquí.
7.1 pom.xml
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <entremid> <grupid> cn.elvinle </groupid> <tifactid> <versión> 0.0.1-snapshot </versión> </rent> <proupid> cn.elvinle </proupid> <artifactid> web web </artifactid> <versión> 0.0.1-snapshot </verse> <packaging> jar </paquete> <name> web </name> <scription> Proyecto de demostración para el arranque de primavera </cription> <perties> <Project.Build.SourceEncoding> UTF-8 </project.Build.SourceEncoding> <Project.Reporting.outputEncoding> Utf-8 </project.rePorting.outputEncoding> <Java.version> 1.8 </Java.Version> </propiences> <Spendences> <Spendency> <AtifactId> Simple </arfactid> <versión> 0.0.1-snapshot </versión> </pendency> </dependencias> <1t.
7.2 Application.yml
servidor: context-path:/Puerto principal: 8080mybatis: config --location: /mapper/*.xmlspring: dataSource: nombre de usuario: contraseña root: url root: jdbc: mysql: // localhost: 3306/shop? Useunicode = true & caracterescoding = utf-8 controlador-classbeN: com.mysql.jdiver
7.3 Controlador
@RestController @requestMapping ("API") Public Class APIController {@aUtoWired private UserService UserService; @RequestMapping ("índice") Lista pública <serem> index () {list <serer> all = userservice.getall (); devolver todo; }}Hasta ahora, nada especial, se ha modificado normalmente. A continuación, habrá diferencias con las que no hay módulos.
7.4 Modificación en la entrada
@ComponentsCan ({"cn.elvinle"})@springbootapplicationPublic clase webapplication {public static void main (string [] args) {springapplication.run (webapplication.class, args); }}En este momento, si el programa se ejecuta directamente, no se accederá con éxito. La razón es que la configuración automatizada y la creación de automatización de MyBatis no son compatibles con múltiples módulos.
En este momento, necesitamos configurar y crear manualmente.
7.5 Configuración de MyBatis Java
< value="classpath:mapper/*.xml" />--> </bean> <!-- The package name where the DAO interface is located, Spring will automatically find the class under it --> <bean id="mapperScannerConfigurer"> <property name="basePackage" value="cn.elvinle.bookshop.mapper" /> <property name="sqlSessionFactoryBeanName" value = "SQLSessionFactory"/> </bean>
Puede usar la configuración de Java para comparar el archivo de configuración anterior
Mybatisconfig:
@ConfigurationPublic Class myBatisconfig {@Value ("$ {mybatis.config------location}") String private mapperLocationPattern; @Bean @ConfigurationProperties (prefix = "Spring.DataSource") public dataSource dataSource () {return new com.alibaba.druid.pool.druiddataSource (); } @Bean (name = "sqlSessionFactory") public sqlSessionFactory sqlSessionFactory () lanza la excepción {sqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean (); sqlSessionFactoryBean.SetDataSource (DataSource ()); PathMatchingResourCePternResolver Resolver = new PathMatchingResourCePternResolver (); sqlSessionFactoryBean.SetMapperLocations (resolver.getResources (mapperLocationPattern)); return sqlSessionFactoryBean.getObject (); }}MyBatismApPersCannerConfig:
@Configuration@AutoConfigurAfter (myBatisconfig.class) @MappersCan ("cn.elvinle.dao.mapper") clase pública myBatismApPersCannerConfig {public MappersCannerConfiguer MappersCannerConfigurer () MAPPERSCANNERCONFIGUERR (); MAPPERSCANNERCONFIGURER.SETSQLSESSIONFACTORYBEanName ("SQLSessionFactory"); MAPPERSCANNERCONFIGURER.SETBASEPACKAGE ("cn.elvinle.dao.mapper"); return MappersCannerConfigurer; }}Ok, aquí puede ejecutar el programa y ver los resultados:
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.