引言
本文主要记录借用Idea 开发环境下,搭建 Spring Boot 项目框架的过程。
系列文档目录
第一个Spring boot web 程序
什么是 Spring Boot:spring boot=spring+spring mvc+一堆java技术栈的相关框架+约定大于配置的思想。
spring boot 并不是一项新的技术,就像ajax一样,而是各种已有技术的一个组合。它的出现,将极大地提高java应用的开发效率。同时,它的出现,彻底颠覆了以往我对java的认识(除了配置,TMD还是配置)。轻量级、可插拔、微服务。
2.1 构建项目
我们先来看下pom.xml,它是maven来管理各种jar包依赖的一个配置文件,是一个包管理工具。
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.5.RELEASE com.jaminhuang springboot 1.0 springboot 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
配置主入口
修改主配置入口类,并去掉控制台输出的Banner图标。(当然,这里不做任何处理也没有关系,只是去除图标后,显得更为清晰)
@SpringBootApplicationpublic class Application { //配置 主入口 public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(Application.class); springApplication.setBannerMode(Banner.Mode.OFF); springApplication.run(args); }}
配置文件 application.properties
删除原有的 application.properties 文件,个人更习惯于使用application.yml这个文件来替代application.properties。
然后在添加一个文件application.yml,注意要和application.properties在同一级目录下面。
添加配置项:
server: port: 8080
新建一个控制器HelloController。
package com.springboot.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { return "hello spring boot"; }}
@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
配置热部署
在这之前,如果我们每次修改了代码,都必须重启一下服务器,并重新运行代码,那么有了热部署之后,修改了代码,我们只需要在IDEA中点击一下Build,就可以直接看到效果了,不需要重启服务器。pom.xml文件中添加如下依赖:
org.springframework.boot spring-boot-devtools true
修改pom.xml
优点:简单,支持Spring-boot项目,支持成员级别的修改热部署。
缺点:只支持spring-boot项目。
读取配置文件
修改配置文件application.yml,添加如下代码:
website: name: 简单的spring boot domain: https://www.jaminhuang.com msg: 这是一个简单的spring boot 框架
新建配置文件类WebSiteConfig,字段名称和配置项中的名称保持一致。
package com.springboot.config;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;@Configuration@ConfigurationProperties(prefix = "website")public class WebSiteConfig { private String name; private String domain; private String msg; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDomain() { return domain; } public void setDomain(String domain) { this.domain = domain; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } @Override public String toString() { return "WebSiteConfig{" + "name='" + name + '\'' + ", domain='" + domain + '\'' + ", msg='" + msg + '\'' + '}'; }}
创建该对象后,还需要配置pom.xml
org.springframework.boot spring-boot-configuration-processor true
在控制器类HelloController中修改代码:
package com.springboot.controller;import com.springboot.config.WebSiteConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController { @Autowired private WebSiteConfig webSiteConfig; @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { return "hello spring boot"; } @GetMapping("/config") public String getConfig() { return webSiteConfig.toString(); }}
最后,配置完成,运行项目,通过访问地址可以查看实际结果啦~