Prefácio:
No passado, quando estávamos construindo um projeto, construímos todos os pacotes em um projeto, o que era realmente conveniente ao processar referências. Não se preocupe, algumas coisas não podem ser configuradas ou lidas.
Ou separe o pacote em um projeto ou sub-projeto. No momento, o processamento de referência no projeto ainda é um pouco problemático. No entanto, os benefícios são mais, por isso não o expressarei mais.
Na idéia, é recomendável usar projetos de construção de vários módulos, em vez do caminho no eclipse. Em seguida, tente dividir um projeto Springboot em um submódulo para ver como ele funciona.
Divisão do projeto:
1. Alterações do diretório
2. Projeto pai
Em teoria, o pai Pom.xml deve ser uma restrição às referências em projetos infantis, principalmente restrições de versão.
Portanto, no POM.XM dos pais, a dependência do gerenciamento deve ser usada para restringir a versão do pacote JAR no subproject.
Então, para referências úteis para alguns subprojetos, você pode mencioná -las no projeto pai.
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance 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> <groupId>cn.elvinle</groupId> <artifactId>parent</artifactId> <Versão> 0.0.1-SNAPSHOT </Version> <batyaging> pom </acheging> <name> pai </name> <cription> Projeto Demo para bota de mola </cription> <air> <voundid> org.springframework.boot </groupid> <stifactId> spring-boot-starter-parent </artefactId> </groupid> Pai do Repository-> </axer> <odules> <odule> pojo </module> <odule> web </module> <odule> dao </module> <odule> service </module> <odule> simpling </module> </modules> <Pro Properties> <prject.build.sourcencoding> utfodining-88 </module> <produces.build.sourcencoding> utfoding> </modules> <Properties> <Project.Build.SourceDing> <Project.Reporting.Outputencoding> utf-8 </project.reporting.outputencoding> <nava.version> 1.8 </java.version> <druid.version> 1.1.3 </druid.version> <mybatis.boot.stter.version> 1.3.1 </mybrsion> <mysql.connector.java.version> 5.1.44 </mysql.connector.java.version> </properties> <pendencyManagement> <pendency> <pendency> </grupo> com.alibaba </frupid> <stifactId> druid </<purfactId> <susshiS> $: <PupidId> org.mybatis.spring.boot </frugiD> <stifactId> mybatis-spring-boot-starter </artifactId> <versão> $ {mybatis.boot.starter.version} </sipers> </dependency> <Pundency> <vroupid> mysql </groupid} <artifactId>mysql-connector-java</artifactId> <version>${mysql.connector.java.version}</version> </dependency> </dependency> </dependencyManagement> <!--Declare dependencies--> <dependencies> <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> </dependency> </dependency> </dependency> </build> <plugins> <PuerpId> org.springframework.boot </frugiD> <TRATIFACTID> Spring-boot-maven-plugin </stutifactId> </flugin> </plugins> </fruct> </project>3. Subproject - Pojo
3.1 pom.xml
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance 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> <parent> <groupId>cn.elvinle</groupId> <artifactId>parent</artifactId> </version> 0.0.1-snapshot </version> </parent> <rouprouid> cn.elvinle </groupiD> <TRAFACTID> POJO </STIFACTID> <Versão> 0.0.1-SNAPSHOT </Version> <bacagaging> jar </cataging> <name> pojo </name> <creemeS> Projeto para BOLL para BOLL para BOLL para BOLL para BOLL para BOLL para BOLL para BOLL para BOLT> Spring> JAR </acheging> <name> <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <ject.reporting.outputencoding> utf-8 </project.reporting.outputEncoding> <nava.version> 1.8 </java.version> </prostitui> <furkins> <PuerpId> org.springframework.boot </frugiD> <TRATIFACTID> Spring-boot-maven-plugin </stutifactId> </flugin> </plugins> </fruct> </project>
3,2 DB Entidade
pacote cn.elvinle.pojo;/** * @author: elvin */public classe usuário {private int id; nome de string privado; public int getId () {return id; } public void setId (int id) {this.id = id; } public string getName () {return name; } public void setName (nome da string) {this.name = name; }}Para conteúdo em Pojo e Dao, você pode usar a engenharia reversa do Mybatis para gerá -lo, o que pode economizar muitos problemas.
4. Subproject- Dao
4.1 pom.xml
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance 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> <parent> <groupId>cn.elvinle</groupId> <artifactId>parent</artifactId> <BSERSULE> 0.0.1-SNAPSHOT </Version> </parent> <purbyid> cn.elvinle </groupiD> <TRAFACTID> Dao </storkactid> <Version> 0.0.1-SNAPSHOT </Version> <bacaging> jar </catinging> <name> dao </name> <crection> Demo Boot Boot <backaging> jar </cataging> <name> </name> <crection> Demo para o Spring Boot <fatching> jar- <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <projeto.reporting.outputencoding> utf-8 </project.reporting.outputEncoding> <nava.version> 1.8 </java.version> </dependências> <GrupId> cn.elvinle </frupiD> <ArtifactId> pojo </sutifactId> <versão> 0.0.1-snapshot </version> </dependency> <!-referência externa-> <!-https://mvnrepositione.com/artifact/arproup.alibaba/druba/drughy> <peencendent> <TarifactId> druid </artifactId> </dependency> <pendesency> <puperiD> mysql </groupiD> <stifactId> mysql-conector-java </artifactId> </dependency> <pendence> <purbroud> org.mybatis.spring.boot </grupo> <TarifactId> mybatis-spring-boot-starter </artifactId> </dependency> </dependency> <fruct> <flugins> <lugin> <voundid> org.springframework.boot </frundid> <stifactId> spring-maven-plugin </sturfactId> </plugin> plugin> spring-maven-plugin </sturfactId> </plugin>
4.2 Mapper
UsermApper.java:
interface pública UserMApper {public list <suser> getall ();}UsermApper.xml:
<? xml versão = "1.0" Encoding = "utf-8"?> <! > <select id = "getall" resultype = "cn.elvinle.pojo.user"> selecione * do usuário </leclect> </palpper>
5. Subproject-Service
5.1 pom.xml
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance 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> <parent> <groupId>cn.elvinle</groupId> <artifactId>parent</artifactId> <Versão> 0.0.1-snapshot </sipers> </parent> <puperid> cn.elvinle </groupiD> <TRAFACTID> Service </storkactid> <versão> 0.0.1-snapshot </sipers> <batyaging> jar </cataging> <name> service </name> <weeption> Projeto de primavera </Descrição </Descrição </Descrição </Descrição </Packaging> <name> Serviço </Nome> <Descrição> Projeto para Spring Boot </Descrição <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <projeto.reporting.outputencoding> utf-8 </project.reporting.outputEncoding> <nava.version> 1.8 </java.version> <pusesties>> <TeRtifactId> pojo </stifactId> <versão> 0.0.1-snapshot </sipers> </dependency> </dependências> <build> <flugins> <plugId> org.springframework.boot </groupid> <tluxactid> spring-boot-maven-plugin </artefactId>
5.2 UserService.java
interface pública UserService {public list <suser> getall ();}6. Subproject - Simpl
6.1 pom.xml
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance 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> <parent> <groupId>cn.elvinle</groupId> <artifactId>parent</artifactId> <Versão> 0.0.1-Snapshot </sipers> </air> <voundid> cn.elvinle </foupid> <TRAFACTID> simpl </stifactId> <versão> 0.0.1-snapshot </sipers> <bacaging> jar </aceling> <name> simply </name> <weepts> Projeto de primavera </Descrição </Descrição </Descrição </Descrição </Packaging> <name> </name>) <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <projeto.reporting.outputencoding> utf-8 </project.reporting.outputEncoding> <nava.version> 1.8 </java.version> <pusesties>> <TeRtifactId> pojo </stifactId> <versão> 0.0.1-snapshot </version> </dependency> <pendency> <voundid> cn.elvinle </foupid> <stifactId> serviço </penderfactId> <siets> 0.0.1-snapshot </versão> </dependência> <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 UsuáriosImpl
@ServicePublic Class UsersImpl implementa UserService {@AUTowired Private UserMApper UserMApper; @Override Public List <suser> getAll () {System.out.println ("usersiMPL getAll"); return userMApper.getAll (); }}7. Subproject - Web
O lugar principal está aqui.
7.1 pom.xml
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance 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> <parent> <groupId>cn.elvinle</groupId> <artifactId>parent</artifactId> <Versão> 0.0.1-snapshot </sipers> </parent> <purbrouid> cn.elvinle </groupiD> <TRAFACTID> web </stardifactId> <versão> 0.0.1-snapshot </sipers> <bacaging> jar </aceling> <name> web </name> <cription> Demo Project para BOT </Descrição </Descrição <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <projeto.reporting.outputencoding> utf-8 </project.reporting.outputEncoding> <nava.version> 1.8 </java.version> <pusesties>> <RartifactId> simpl </stifactId> <versão> 0.0.1-snapshot </version> </dependency> </dependences> <build> <flugins> <voundId> org.springframework.boot </frundid> <stifactId> spring-maven-plugin/</strofactId> </plugin> plugin> spring-maven-plugin </hirtfactid> </plugin>
7.2 Application.yml
Servidor: contexto-path:/Porta pai: 8080mybatis: Config-Location: /mapper/*.xmlspring: DataSource: Nome de usuário: root senha: root url: jdbc: mysql: // localhost: 3306/shop? useunicode = trueCoding = utf-8-clit-s-clits: 3306/shop?
7.3 Controlador
@RestController @requestmapping ("API") Classe pública Apicontroller {@AUTOWIRED PRIVADO UserService UserService; @RequestMapping ("Index") list <suser> index () {list <suser> all = userservice.getall (); devolver tudo; }}Até agora, nada de especial, foi modificado normalmente. Em seguida, haverá diferenças das pessoas sem módulos.
7.4 Modificação na entrada
@ComponentsCan ({"cn.elvinle"})@springbootApplicationpublic class. }}No momento, se o programa for executado diretamente, ele não será acessado com sucesso. O motivo é que a configuração automatizada e a criação automatizada do Mybatis não são suportadas em vários módulos.
Neste momento, precisamos configurar e criar manualmente.
7.5 Configuração do Mybatis Java
<!-MyBatis Factory-> <bean id = "sqlSessionFactory"> <propriedade name = "DataSource" ref = "DataSource"/> <propriedade name = "configLocation" value = "classPath: mybatis/sqlmapConfig.xml"/> <!-ScanyMping.xml-FILDA) Value = "ClassPath: Mapper /*. Xml" />-> </i Bean> <!-O nome do pacote em que a interface Dao está localizada, a mola encontrará automaticamente a classe sob ele-> <bean id = "mapperscannerconfigurer"> <nome da propriedade = "BasEpackage" = "cn.elvinle.Bookshop.papper"> value = "SQLSessionFactory"/> </Sean>
Você pode usar a configuração Java para comparar o arquivo de configuração acima
Mybatisconfig:
@ConfigurationPublic Classe mybatisconfig {@value ("$ {mybatis.config-location}") private string mapperLocationPattern; @Bean @ConfigurationProperties (prefix = "spring.dataSource") public DataSource DataSource () {Return new com.alibaba.druid.pool.druiddataSource (); } @Bean (name = "sqlSessionFactory") public sqlSessionFactory sqlSessionFactory () lança exceção {sqlSessionFactoryBean sqlSessionFactoryBean = novo SQLSessionFactoryBean (); sqlSessionFactoryBean.SetDataSource (DataSource ()); PathMatchingResourCepTatherNResolver Resolver = new PathMatchingResourCepTatternResolver (); sqlSessionFactoryBean.SetMapperLocations (Resolver.GetResources (MapperLocationPattern); return sqlSessionFactoryBean.getObject (); }}Mybatismapperscannerconfig:
@Configuration@AutoConfigureefter (mybatisconfig.class) @mapperscan ("cn.elvinle.dao.mapper") Classe public mybatismapperscannerConfig {public MappersCannerCoRurer MappersCanCanCerCannerFigRonderFigRonderFigConfigurer MAPPERCURNINGERSANCANFIGRONCERCERCERSCANCERSCANCERCANCERCANFIM MappersCannerConfigurer.SetSqlSessionFactoryBeanName ("SQLSessionFactory"); mapperscannerconfigurer.setBasePackage ("cn.elvinle.dao.mapper"); Retornar MapperScannerConfigurer; }}Ok, aqui você pode executar o programa e ver os resultados:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.