赞
踩
随着动态语言的流行 (Ruby
、Groovy
、Scala
、Node.js
),Java
的开发显得格外的笨重:繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。
在上述环境下,Spring Boot
应运而生。它使用“习惯优于配置”
(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速的运行起来。使用 Spring Boot
很容易创建一个独立运行(运行 Jar
,内嵌 Servlet
容器)准生产级别的基于 Spring
框架的项目,使用 Spring Boot
你可以不用或者只需很少的 Spring
配置。
这里我们使用 Intellij IDEA 2018
来新建一个 Spring Boot
项目
创建完成后的工程目录结构如下:
<?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 https://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.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zysheep</groupId>
<artifactId>hello-spring-boot</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>hello-spring-boot</name>
<description>Demo project for Spring Boot</description>
<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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<!--
在工作中,很多情况下我们打包是不想执行测试用例的
可能是测试用例不完事,或是测试用例会影响数据库数据
跳过测试用例执
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--跳过项目运行测试用例-->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
Spring Boot
的 Parent
,表示我们是一个 Spring Boot
工程spring-boot-starter
还自动帮我们开启了 Web
支持我们只需要在HelloSpringBootApplication类上添加@RestController
注解,添加方法:
@RequestMapping(value = "", method = RequestMethod.GET)
public String sayHello() {
return "Hello Spring Boot";
}
启动 HelloSpringBootApplication
的 main()
方法,浏览器访问 http://localhost:8080
可以看到:
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
@SpringBootTest
public class HelloSpringBootApplicationTests {
@LocalServerPort
private int port;
private URL base;
@Autowired
private TestRestTemplate template;
@Before
public void setUp() throws Exception {
this.base = new URL("http://localhost:" + port + "/");
}
@Test
public void test1() {
ResponseEntity<String> response = template.getForEntity(base.toString(), String.class);
assertThat(response.getBody(), equalTo("Hello Spring Boot"));
}
}
在 Spring Boot
启动的时候会有一个默认的启动图案
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.2.RELEASE)
我们在 src/main/resources
目录下新建一个 banner.txt
通过 http://patorjk.com/software/taag 网站生成字符串,将网站生成的字符复制到 banner.txt
中
再次运行这个程序
${AnsiColor.BRIGHT_RED}
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
常用属性设置:
${AnsiColor.BRIGHT_RED}
:设置控制台中输出内容的颜色${application.version}
:用来获取 MANIFEST.MF
文件中的版本号${application.formatted-version}
:格式化后的 ${application.version}
版本信息${spring-boot.version}
:Spring Boot
的版本号${spring-boot.formatted-version}
:格式化后的 ${spring-boot.version}
版本信息Spring Boot
项目使用一个全局的配置文件 application.properties
或者是 application.yml
,在 resources
目录下或者类路径下的 /config
下,一般我们放到 resources
下。
修改 Tomcat
的端口为 9090
,并将默认的访问路径 “/” 修改为 "boot"
,可以在 application.yml
中添加:
server:
port: 9090
servlet:
context-path: /boot
Spring Boot
为我们提供了简化企业级开发绝大多数场景的 starter pom
,只要使用了应用场景所需要的 starter pom
,相关的技术配置将会消除,就可以得到 Spring Boot
为我们提供的自动配置的 Bean
。
Spring Boot
对各种日志框架都做了支持,我们可以通过配置来修改默认的日志的配置
默认情况下,Spring Boot
使用 Logback
作为日志框架
logging:
file: logs/spring-boot-hello.log
level.org.springframework.web: DEBUG
关闭特定的自动配置使用 @SpringBootApplication
注解的 exclude
参数即可,这里以关闭数据源的自动配置为例
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
// OrderApplication.class启动类
@SpringBootTest(classes = OrderApplication.class)
public class OrderApplicationTest {
@Autowired
private UserClient userClient;
@Test
public void testGzip() {
String s = userClient.testGzip();
System.out.println(s.length());
}
}
与启动类相同目录创建测试类,则不需要在@SpringBootTest
注解中指定启动类
springboot项目默认情况下"/**"
访问当前项目的任何资源,都去(静态资源的文件夹)找映射。用以前的方式再webApp中访问静态资源。
静态资源的文件夹:
resources同级目录新建webapp目录,设置webapp资源相对路径
可以再webapp下新建多个目录文件,访问可需要添加对应目录。如:访问update.html,浏览器访问 http://localhost:8080/user/update.html
1、添加对jsp依赖的支持。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
2、添加前缀和后缀
spring:
resources: #静态资源
static-locations:
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
- classpath:/img/
- classpath:/js/
mvc:
view:
prefix: /
suffix: .jsp
SpringBoot 项目开发完毕后,支持两种方式部署到服务器:
更改pom文件中的打包方式为war
<packaging>war</packaging>
修改启动类
@SpringBootApplication
public class SpringbootDeployApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringbootDeployApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootDeployApplication.class);
}
}
添加打包插件和指定jar包名称
<build>
<finalName>springboot</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。