介绍
使用Spring Bboot是快乐并且简单的,不需要繁琐的配置就能够完成一套非常强大的应用。
spring boot 2.3.1
Spring Boot 2.3.1 发布于:2020/06/12,现在已经提交到 Spring 仓库和 Maven 中央仓库了。
这个版本包括 127 个 bug 修复、Spring Boot 文档改进增强、依赖升级等,另外还新增了一些新特性:
•提供基于新的 Maven 坐标 com.oracle.database 对 Oracle JDBC driver 的依赖管理;
•优化 Spring Cloud 的 CachedRandomPropertySource 不能正确适配的问题;•限制使用定制的 YAML 类型;
•增强对 NoSuchMethodErrors 异常失败分析,能显示基类从哪被加载的;•提供更佳的错误消息,如果 Docker 停止运行了;
•优化 SystemEnvironmentPropertyMapper 类;
•提供更佳的诊断信息,当构建 OCI 镜像失败时 Docker 响应的 500 错误;
•支持通过 alwaysUseFullPath=true 参数来配置 UrlPathHelper;•支持在 Elasticsearch URIs 中使用用户信息;
•支持在 Spring WebFlux 框架中使用欢迎页面;
这个小版本还增加了蛮多东西的,大家也没有必要跟着版本走,可以根据需要进行升级。疫情也挡不住外国友人更新的热情。
实现
使用STS,可以去官方网站下载最新版。网站地址 https://Spring.io/tools/sts/ Spring Tool Suite™是基于eclipse开发的专门为Spring开发使用的工具包。
新建工程
选择Spring Starter Project,
输入工程名 对应的Name 打包方式 对应的Packaging,可以选择jar或者war的方式。
输入组织名 对应的Group 输入描述 对应的Description
输入包名 对应的Package 点击next,然后选择web和mysql
这里的版本用的是2.3.1 如果没有本地maven库或者私库会下载很长时间。
添加默认请求
进入 Chapter0301Application 添加
@RestController
@SpringBootApplication
public class Chapter0301Application {
@RequestMapping("/")
String home() {
return "欢迎使用Spring Boot!";
}
public static void main(String[] args) {
SpringApplication.run(Chapter0301Application.class, args);
}
}
使用@RestController 相当于@Controller 和 @RequestBody。是Sspring Bboot 基于Sspring MVC的基础上进行了改进, 将@Controller 与@ResponseBody 进行了合并形成的一个新的注解。 @EnableAutoConfiguration 作用 从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器 只有spring.boot.enableautoconfiguration为true(默认为true)的时候,才启用自动配置 @EnableAutoConfiguration还可以进行排除,排除方式有2种,一是根据class来排除(exclude),二是根据class name(excludeName)来排除 其内部实现的关键点有
1.ImportSelector 该接口的方法的返回值都会被纳入到spring容器管理中
2.SpringFactoriesLoader 该类可以从classpath中搜索所有META-INF/spring.factories配置文件,并读取配置
启动spring boot
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE)
2020-06-23 13:30:11.611 INFO 9916 --- [ main] com.cloud.sky.Chapter0301Application : Starting Chapter0301Application on DADI-PC with PID 9916 (D:\java\microservice\chapter0301\target\classes started by Administrator in D:\java\microservice\chapter0301)
2020-06-23 13:30:11.614 INFO 9916 --- [ main] com.cloud.sky.Chapter0301Application : No active profile set, falling back to default profiles: default
2020-06-23 13:30:12.415 INFO 9916 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-06-23 13:30:12.423 INFO 9916 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-06-23 13:30:12.424 INFO 9916 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.36]
2020-06-23 13:30:12.512 INFO 9916 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-06-23 13:30:12.512 INFO 9916 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 830 ms
2020-06-23 13:30:12.665 INFO 9916 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-06-23 13:30:12.809 INFO 9916 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-06-23 13:30:12.818 INFO 9916 --- [ main] com.cloud.sky.Chapter0301Application : Started Chapter0301Application in 1.492 seconds (JVM running for 3.109)
2020-06-23 13:30:20.675 INFO 9916 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-06-23 13:30:20.676 INFO 9916 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-06-23 13:30:20.680 INFO 9916 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
打开浏览器访问 http://localhost:8080/ 可以得到如下页面
遇到问题
构建的过程中遇到问题
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-parseable POM D:\java\apache-maven-3.1.1\repo\org\jetbrains\kotlin\kotlin-bom\1.3.72\kotlin-bom-1.3.72.pom: entity reference names can not start with character ')' (position: START_TAG seen ...ost,s="";function qs(n){var u=D.URL;var t=u.match(eval(\'/(\\?|#|&)... @1:243) @ D:\java\apache-maven-3.1.1\repo\org\jetbrains\kotlin\kotlin-bom\1.3.72\kotlin-bom-1.3.72.pom, line 1, column 243
@
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project com.cloudskyme:chapter0301:0.0.1 (D:\java\microservice\chapter0301\pom.xml) has 1 error
[ERROR] Non-parseable POM D:\java\apache-maven-3.1.1\repo\org\jetbrains\kotlin\kotlin-bom\1.3.72\kotlin-bom-1.3.72.pom: entity reference names can not start with character ')' (position: START_TAG seen ...ost,s="";function qs(n){var u=D.URL;var t=u.match(eval(\'/(\\?|#|&)... @1:243) @ D:\java\apache-maven-3.1.1\repo\org\jetbrains\kotlin\kotlin-bom\1.3.72\kotlin-bom-1.3.72.pom, line 1, column 243 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/ModelParseException
1. 解决
修改maven默认源配置
我使用的是阿里的maven仓库,国外的东西没个代理还真麻烦。
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
然后执行 mvn help:system
成功可以看到如下界面:
本文版权归作者有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
更多精彩文章可以观注微信公众号