Spring-Boot笔记

字数 488 · 2018-03-30

#java #spring

简介

使用 Spring Boot,我们可以更加方便的构建独立的产品级Srping应用。

Spring Boot 的主要目标:

  • 开箱即用
  • 零代码生成,零XML配置

代码结构

建议把 main application class 放在其他package的根目录下,这样子 @ComponentScan 就不必配置 basePackage了,@EnableAutoConfiguration 注解也长常常放在 mian class 上,以此给 JPA 提供搜索 @Entity 的路径。

这里有一个典型的包结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
com
 +- example
     +- myapplication
         +- Application.java
         |
         +- customer
         |   +- Customer.java
         |   +- CustomerController.java
         |   +- CustomerService.java
         |   +- CustomerRepository.java
         |
         +- order
             +- Order.java
             +- OrderController.java
             +- OrderService.java
             +- OrderRepository.java

Application.java 中会声明main函数并且会使用一些基本配置:

1
2
3
4
5
6
7
8
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

Starters

Starters 是一些快捷的依赖配置。

比如要使用 FreeMarker,只需添加:

1
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

许多 Starter 都有一个 spring.provides 文件,这个文件只是给工具使用的,比如用于实现AutoComplete。

Reference - spring.io

@EnableAutoConfiguration

这个注解告诉 Spring Boot 通过依赖来猜测配置。比如依赖了一个 spring-boot-starter-web,auto-configuration 就会猜测我们是在开发一个web应用,并依此做出相应的配置。

常见属性值

Common application properties - spring.io

测试

测试Controller

一个可行的测试,使用 MockMvc

1
2
3
4
5
6
7
8
9
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = TestApp.class)
@AutoConfigureMockMvc
public class UserControllerTest {
    @Test
    public void generateNewCode() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/user/code").param("userId","user1")).andDo(print());
    }
}

测试 Controller

运行

Maven

1
mvn spring-boot:run

Gradle

1
gradle bootRun

打包

Maven

添加spring-boot-maven-plugin,然后使用 mvn package 打包,打好的jar包会在 target 目录下,使用 java -jar 即可运行。

1
2
3
4
5
6
7
8
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

参考资料

Reference - spring.io
spring-boot-custom-starter - baeldung.com