简介
使用 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。
@EnableAutoConfiguration
这个注解告诉 Spring Boot 通过依赖来猜测配置。比如依赖了一个 spring-boot-starter-web
,auto-configuration 就会猜测我们是在开发一个web应用,并依此做出相应的配置。
常见属性值
测试
测试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());
}
}
运行
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