IDEA学习SpringBoot记录 (1)
1、配置好JAVA环境、安装IDEA(不具体展开啦)
2、为什么使用IDEA而不是Eclispe
两个软件都有在使用,发现两个软件在开发普通java项目和SSM项目、SSH项目的时候各有千秋,eclipse占用内存比IDEA小,且热部署不需要额外配置;IDEA在调试时查看表达式内容更加便捷,集成了很多工具,快捷键熟悉后更容易上手。之前由于熟悉程度和惯性一直是使用eclipse,前阵子准备学习springboot,了解后发现两个IDE相比,通过IDEA学习springboot更加方便快捷。
eclispe需要安装STS插件,在IDEA(使用版本:2017.1.5)直接通过Spring Initializr就可以很快速的搭建一个简单的springboot项目。
3、创建流程
file-new-project
Spring Initializr (选择使用的SDK)
填写ArtiArtifact,选择相应的选项,如图
只选择了最基础的web和thymeleaf依赖
若控制台出现“无效的发行版本 1.8”或者其他无效版本,检查pom.xml中依赖的java version,修改为依赖中使用的版本即可
结果还是不行,报以下错误
问题在于初始化时SpringBoot的版本是2.0.1,使用1开头的版本即可。
本想修改继续使用1.7,但是后来发现Spring boot 版本的许多jar包 依赖JDK1.8,所以启动时候会报错,类似不支持jdk版本的提示。只要换上JDK8 环境就可以啦。
而且现在1.7有点过旧了,所以还是换成决定1.8开发。
目录及修改内容,让页面显示“Hello World”
@EnableAutoConfiguration 和 SpringApplication 。
@EnableAutoConfiguration 用于自动配置。简单的说,它会根据你的pom配置(实际上应该是根据具体的依赖)来判断这是一个什么应用,并创建相应的环境。
在上面这个例子中,@EnableAutoConfiguration 会判断出这是一个web应用,所以会创建相应的web环境。
SpringApplication 则是用于从main方法启动Spring应用的类。默认,它会执行以下步骤:
- 创建一个合适的ApplicationContext实例 (取决于classpath)。
- 注册一个CommandLinePropertySource,以便将命令行参数作为Spring properties。
- 刷新application context,加载所有单例beans。
- 激活所有CommandLineRunner beans。
默认,直接使用SpringApplication 的静态方法run()即可。但也可以创建实例,并自行配置需要的设置。
显示结果如下
此时的状态栏
以下内容摘抄自 https://blog.csdn.net/small_mouse0/article/details/77800737,感谢
添加一个类,并使用yml格式配置application
修改默认端口和context-path,并配置新的requestMapping。
结果如下
注意细节
【1】,springboot启动时日志是排错的关键地方,凡是实例化成功的Controller都会有一个URL,以及启动的端口号。如下图:
【2】context-path: /helloworld会出现在下图位置,,同时还有一些过滤器,,也都有显示,,dispatcherServlet学习过SpringMVC的读者应该不陌生吧,,核心请求分发处理器。
【3】dispatcherServlet在第一次访问时创建,并初始化,servlet是单例的,,所以创建一次。
servlet详解及Tomcat中多线程下的Servlet
【Tomcat线程池】线程池配置及线程分配测试
【4】有个问题,SpringBoot是如何启动Tomcat的,,我没配置,它咋知道?
看了下源码原来有如下配置,springBoot在,
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency>
Starter for using Tomcat as the embedded servlet container. De
fault servlet container starter used by spring-boot-starter-web
Stater使用Tomcat作为Servlet容器,默认Servlet容器starter通过spring-boot-starter-web使用。
解释一下,,就是配置了【spring-boot-starter-web】,会默认带一个Tomcat,作为Servlet容器。
【5】学过SpringMVC的读者都知道,Controller需要配置ResponstBody才能够返回内容,否则会去找ViewResolver进行转view输出,此处是直接输出的,,??why
【@RestController】这个注解是一个组合注解,它包含了这两个注解【@Controller】【@ResponseBody】所以可以直接输出,,方便了许多。