SpringBoot入门篇
- 添加依赖
<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>
- 应用启动类
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
- 注解@SpringBootApplication说明
@SpringBootApplication是一个组合注解。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { }
@SpringBootConfiguration也是一个组合注解。
@Configuration:如果一个类上添加了@Configuration,代表是一个JavaConfig,可以充当Spring容器,相当于Spring的配置文件。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration { }
@EnableAutoConfiguration也是一个组合注解。
@AutoConfigurationPackage:表示将主配置类(即@SpringBootApplication 标注的类)所在的包及其子包里的所有类都纳入 Spring 容器。
@Import 注解,是 Spring 的底层注解。它给容器中导入一个了组件 (AutoConfigurationImportSelector.class)。
AutoConfigurationImportSelector 确定了导入哪些组件到选择器,这些组件会被自动添加到 Spring 容器。
可以看spring-boot-autoconfigure.jar 下 META-INF/spring.factories文件以及jar里面的自动配置相关类,这些自动配置类作用就是帮我们自动配置好,来达到简化开发、提供效率的目的。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration { }
- Actuator监控终端
添加依赖
<!-- actuator监控器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
在application.yml添加info信息
info:
company:
name: xcj
url: http://www.xcj.com
address: Bejing,China
author:
name: 张三
project: #从pom文件中读取指定的属性值project.groupId、project.artifactId
groupid: @project.groupId@
artifactid: @project.artifactId@
访问地址:http://localhost:8088/homepage-dev/actuator/info,就可以看到输出:
{"company":{"name":"abc","url":"http://www.abc.cpm","address":"Bejing,China"},"author":{"name":"张三"},"project":{"groupid":"xcj.homepage","artifactid":"xcj.homepage"}}
修改actuator终端
management:
server:
port: 9999 # 指定actuator监听的端口号
servlet:
context-path: /dev # 指定actuator的上下文路径
endpoints:
web:
base-path: /base # 指定actuator监控终端的基本路径
exposure:
include: "*" # 开启所有监控终端
exclude: ["env", "health"] # 指定要关闭的监控终端
访问地址就变成了:http://localhost:9999/dev/base
- 自定义异常处理页面
同一异常处理,如404错误,只需要定义一个/resources/public/error/404.html页面即可。
- 多配置式多环境选择
开发环境、生产环境切换,配置文件有application.yml、application-dev.yml 、application-pro.yml。
在application.yml中配置如下:
spring:
profiles:
active: dev #默认为开发环境
# active: dev #默认为生产环境
如果业务处理类,也需实现开发环境和生产环境的区别,则可以使用@Profile注解实现。
@Service @Profile("dev") public class MyServiceImpl implements MyService { }
- 读取自定义配置
通过@Value注解和${}符号,来获取properties或yml文件里配置的属性值。
@Value("${server.port}")
private int port;
通过@PropertySource指定要读取的配置文件名称和@ConfigurationProperties指定要读取的属性前缀,来读取譬如demo.properties里定义的属性键值对。
@Component // 生命周期交给Spring容器管理 @PropertySource(value = "classpath:demo.properties",encoding = "UTF-8") // 指定要读取的配置文件名称 @ConfigurationProperties("xcj.demo") // 指定要读取的属性的前缀 public class Demo { private String name; private List list; public String getName() { return name; } public void setName(String name) { this.name = name; } public List getList() { return list; } public void setList(List list) { this.list = list; } }
demo.properties
xcj.demo.list[1]=2
xcj.demo.list[2]=3

浙公网安备 33010602011771号