标签(空格分隔): springboot
为什么要构建多模块项目
( 1 )不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定 位到问题也很难修正问题,可能在修正问题的时候引入更多的问题。 ( 2 )多方面的代码集中在一个整体结构中,新入的开发者很难对整体项目有直观的感受,增加了 新手介入开发的成本,需要有一个熟悉整个项目的开发者维护整个项目的结构(通常在项目较大 且开发时间较长时这是很难做到的)。 ( 3 )开发者对自己或者他人负责的代码边界很模糊,这是复杂项目中最容易遇到的,导致的结果 就是开发者很容易修改了他人负责的代码且代码负责人还不知道,责任追踪很麻烦。 将一个复杂项目拆分成多个模块是解决上述问题的一个重要方法,多模块的划分可以降低代码之 间的耦合性(从类级别的耦合提升到 jar 包级别的耦合),每个模块都可以是自解释的(通过模块 名或者模块文档),模块还规范了代码边界的划分,开发者很容易通过模块确定自己所负责的内 容 模块划分与依赖关系 dao 层依赖 model service 层依赖 dao 、 model 、 utils web 层依赖 service 、 model 、 utils controller 层依赖 service 、 modelIDEA创建SpringBoot的多模块项目
建立父工程
( 1 )在 IDEA 工具栏选择 File->New->Project ( 2 )选择 Spring Initializr, 默认选择 Default ,然后点击 Next: 这时把没用的 .mvn 目录, src 目录, mvnw 还有 mvnw.cmd 都删除,最终只保留 .gitignore 和 pom.xml , 若是 web 项目,可在该 pom.xml 里添加以下依赖:<!--web特征-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
创建子模块
选择Maven,点击Next
填写以下内容,点击Next
填写Module,点击Finish
同理添加boot-controller,boot-dao,boot-service,boot-view子模块
@SpringBootApplication(scanBasePackages = {
"com.hz.controller",
"com.hz.service"
})
@MapperScan("com.hz.dao") //扫描DAO 将数据源注入
@EnableTransactionManagement //开启事务
public class bootApplication {
public static void main(String[] args) {
SpringApplication.run(bootApplication.class, args);
}
}
application.yml
server : port : 80 spring : datasource : username : root password : root url : jdbc : mysql : //127.0.0.1 : 3308/smbms? useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC driverClassName : com.mysql.jdbc.Driver resources : static-locations : classpath : /templates,classpath : /static/ thymeleaf : suffix : .html prefix : classpath : /templates/ encoding : utf-8 cache : false # 开发状态下不开启 mybatis : mapper-locations : classpath : mapper/*.xml type-aliases-package : com.hz.pojo configuration : log-impl : org.apache.ibatis.logging.stdout.StdOutImpl
在boot-dao中引用boot-common
<dependency>
<groupId>com.hz</groupId>
<artifactId>boot-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在boot-service中引入boot-dao,boot-common
<dependency>
<groupId>com.hz</groupId>
<artifactId>boot-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hz</groupId>
<artifactId>boot-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在
boot-controller
中引入
boot-service
,
boot-common
<dependency>
<groupId>com.hz</groupId>
<artifactId>boot-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hz</groupId>
<artifactId>boot-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在
boot-view
中引入
boot-controller
<dependency>
<groupId>com.hz</groupId>
<artifactId>boot-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在父级
pom.xml
中设置编译器与启动类
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--启动类路径-->
<mainClass>com.hz.bootApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
注意:
父
project
的
pom
文件:不是
jar
,是
pom
子
project
的
pom
文件:都是
jar
启动项目访问模板下
index.html
,测试访问成功!!!!
maven
执行命令
clean
,
compile
,
install
,
package
打包上线问题
spring-boot
工程打包编译时,会生成两种
jar
包,一种是普通的
jar
,另一种是可执行
jar
。默认情况下,
这两种
jar
的名称相同,在不做配置的情况下,普通的
jar
先生成,可执行
jar
后生成,所以可执行
jar
会覆
盖普通的
jar
在
pom
打包处添加了
configuration
一项
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--启动类路径-->
<mainClass>com.hz.bootApplication</mainClass>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
标签:hz,service,jar,boot,Maven,模块,按层,com
From: https://blog.csdn.net/m0_63233901/article/details/143933261