从头开始Spring Boot之常见用法总结
[^Spring Boot 规约大于配置,大多数组件,不需要自行配置,而是自动组装!简化开发,大多数情况,使用默认即可!]:
构建可执行jar或者war
问题:构建出的xxx-1.0.0-SNAPSHOT.jar中没有主清单属性?
答:
在pom.xml文件中添加 Spring Boot 的插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
jar 规范里面,JAR文件META-INF目录有一个 MANIFEST.MF,里面有一个 Main-Class 的属性。API:
java.util.jar.Manifest#getAttributes
从 jar 切换成 war 打包方式
优先方案:
1.pom.xml的打包方式<packaging>jar</packaging>
改成<packaging>war</packaging>
(默认jar方式)
2.加入标签<failOnMissingWebXml>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
备选方案
- jar-> war
- 创建文件夹
webapp/WEB-INF
(相对于src/main
级别),创建空文件web.xml
构建多模块(module)应用
- 修改主工程类型jar -> pom
- 新建 web 工程,讲遗留代码移动到 web java 目录下
- 再从 web 工程,独立出 model 工程
- 将 web 工程依赖 model 工程
- 重复步骤 3,独立出 persistence
- 再从 persistence 添加 model 的依赖
- 最终依赖关系 web -> persistence -> model
jar、war、其它启动方式
目录启动方式可以帮助解决老旧的jar 不支持 Spring Boot 新方式,比如老版本的 MyBatis
- 如果是 jar 包,解压后,跳转解压目录,并且执行
java
命令启动,启动类是 org.springframework.boot.loader.JarLauncher - 如果是 war包,解压后,跳转解压目录,并且执行
java
命令启动类是org.springframework.boot.loader.WarLauncher