概述
application的作用是为应用程序提供配置信息,在springboot启动的时候,会自动加载该文件,并根据其中的配置信息对对于的应用程序进行配置
application文件分为两种
- properties
- yaml
配置文件的配置项有很多,常见的有数据库连接信息,日志,端口号等。
在springboot中还可以使用@ConfigurationProperties注解将配置文件中的配置项注入到Java对象中,方便进行配置和管理
这里以yaml为主来详解
应用
常见的一些配置项
server:
port: 8080 # 服务器端口号
context-path: /myapp # 应用程序的上下文路径
servlet:
context-path: /myapp # Servlet的上下文路径
ssl:
enabled: true # 是否启用SSL/TLS
key-store: classpath:ssl/server.jks # 证书库路径
key-store-password: password # 证书库密码
key-store-type: JKS # 证书库类型
key-alias: tomcat # 证书别名
spring:
application:
name: myapp # 应用程序名称
datasource:
url: jdbc:mysql://localhost:3306/mydb # 数据库连接URL
username: root # 数据库用户名
password: password # 数据库密码
driver-class-name: com.mysql.jdbc.Driver # JDBC驱动类名
logging:
level:
root: INFO # 根日志级别
org.springframework.web: DEBUG # 指定包的日志级别
在Java中导入配置列定义的信息
配置类信息
# 超级管理员
superAdministrator:
name: admin
pwd: 123456
管理员类
/**
* 表示当前类是一个配置类
* 通常用于定义Bean的创建方式和依赖关系 (告诉spring容器,这个类中定义的@Bean注解所创建的Bean应该被管理和维护)
* */
@Configuration
/**
* 使用注解@ConfigurationProperties注解需要和@Configuration一起使用
* @ConfigurationProperties可以直接使用在一个普通类上,但这样做可能会导致无法被正确的扫描注册到Bean中
* 需要使用@Configuration来提升等级,这样可以确保@ConfigurationProperties注解被正确地扫描到
* 并且在属性值发生变化时能够自动刷新Java Bean。
* */
@ConfigurationProperties(prefix = "superadministrator")
public class SuperAdministrator {
private String name;
private String pwd;
public String getName(){
return this.name;
}
public String getPwd(){
return this.pwd;
}
/**
* 必须需要set方法 配置文件里面的配置项才可以注入
* */
public void setName(String name) {
this.name = name;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "SuperAdministrator{" +
"name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
使用
/**
* 标识这个类为 controller类(处理客户端发送的请求,并返回响应结果) Rest表示返回JSON格式
* RestController 是 Controller的升级
* */
@RestController
/**
* 用于设置当前类的url地址
* */
@RequestMapping("/index")
public class IndexController {
/**
* @Autowired
* 自动在代码上下文中找到其匹配的Bean,当仅有一个匹配的Bean时,Spring将其注入@Autowire标注的变量中。
* @Qualifier(指定Bean名称注入)
* 通常和@Autowired一起使用,一般在两个或者多个bean是相同的类型时,spring注入会出现混乱,就需要使用@Qualifier(“xxBean”) 来指定Bean的名称。
* @Resource
* 默认通过name属性去匹配bean,找不到再按type去匹配
* 当type属性和name属性同时指定时,会优先使用type属性匹配bean。
* */
@Autowired
private SuperAdministrator admin;
/**
* RequestMapper可以传入多个URL (接收这些地址传递的数据)
* 如果是多个的话 需要把path标明,如果只有一个地址可以不写(默认的)
* @RequestMapping(path = {"/hello","hello2"})
* */
@RequestMapping("/hello")
public String Hello(){
System.out.println(admin.getName());
return admin.toString();
}
}