Spring Boot 项目学习 (一) 项目搭建
引言
本文主要记录借用Idea 开发环境下,搭建 Spring Boot 项目框架的过程。
系列文档目录
Spring Boot 项目学习 (一) 项目搭建
Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置
Spring Boot 项目学习 (三) Spring Boot + Redis 搭建
Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档
第一个Spring boot web 程序
什么是 Spring Boot:spring boot=spring+spring mvc+一堆java技术栈的相关框架+约定大于配置的思想。
spring boot 并不是一项新的技术,就像ajax一样,而是各种已有技术的一个组合。它的出现,将极大地提高java应用的开发效率。同时,它的出现,彻底颠覆了以往我对java的认识(除了配置,TMD还是配置)。轻量级、可插拔、微服务。
2.1 构建项目
我们先来看下pom.xml,它是maven来管理各种jar包依赖的一个配置文件,是一个包管理工具。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.jaminhuang</groupId>
<artifactId>springboot</artifactId>
<version>1.0</version>
<name>springboot</name>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置主入口
修改主配置入口类,并去掉控制台输出的Banner图标。(当然,这里不做任何处理也没有关系,只是去除图标后,显得更为清晰)
@SpringBootApplication public 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; @RestController public 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文件中添加如下依赖:
<!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
修改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
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
在控制器类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; @RestController public 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(); } }
最后,配置完成,运行项目,通过访问地址可以查看实际结果啦~