使用ide引导创建的springboot默认会在resources下创建一个application.properties文件
下面以配置数据源为例 演示读取properties中的数据
在application.properties中添加
spring.datasource.url=jdbc:mysql://localhost:3306/one?useSSL=true
spring.datasource.driver=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
pom文件中添加 完整的pom文件 最下面会有
<!--mysql--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--druid 连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.26</version> </dependency>
获取配置文件数据的第一种方式 使用@Value注解 和以前的使用方式一样 controller如下 @RestController public class PropController { @Value("${spring.datasource.driver-class-name}") private String driver; @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @RequestMapping("/prop01") public String testProp01() { return driver+"<br>"+url+"<br>"+username+"<br>"+password; } } 访问网页 2.第二种获取数据方式 2.1.获取默认的配置文件application.properties中的数据 使用 @ConfigurationProperties 这个注解来获取数据 新建一个类用来封装获取的数据 @Component //将这个类交给spring管理 @ConfigurationProperties(prefix = "spring.datasource") //定义前缀 public class DataSourceConfig { private String driver; //属性名和配置文件保持一致 private String url; private String username; private String password; //getter setter方法略 } 在刚才的controller调用 添加如下代码 @Autowired private DataSourceConfig dataSourceConfig; //注入bean @RequestMapping("/prop02") public String testProp02() { return dataSourceConfig.getDriver()+"<br>"+dataSourceConfig.getUrl()+"<br>---" +dataSourceConfig.getUsername()+"<br>"+dataSourceConfig.getPassword(); }
访问网页 第一个root前加了 --- 区分
2.2.获取其他配置文件中的数据 girl.properties文件 girlFriend.name=amy girlFriend.age=16 girlFriend.height=175 girlFriend.cupSize=G 对应的类文件 @Configuration(value = "girl") // 注入时使用的名字 如果不指定 默认是类名首字母小写 @ConfigurationProperties(prefix = "girlFriend") //定义前缀 @PropertySource("classpath:config/girl.properties") //使用自定义的配置文件 只能使用 properties yml暂时不支持 public class GirlProp { private Integer id; private String name; private Integer age; private String height; setter getter方法略 } controller代码如下 @RestController public class GirlController { @Autowired private GirlProp girl; @RequestMapping("/girl") public String girl(){ System.out.println(girl); return girl.getId()+"\t"+girl.getName()+"\t"+girl.getAge()+"\t"+girl.getHeight(); } } 接下来 最重要的一点 需要在启功类上添加一个注解来指定我们自己的配置类 @SpringBootApplication @EnableConfigurationProperties(GirlProp.class) public class Springboot04Application { public static void main(String[] args) { SpringApplication.run(Springboot04Application.class, args); } }
目录结构
另外 关于springboot默认的配置文件有两种形式 1. application.properties KV形式 2.application.yml 格式 是一种表示层级关系的显示方式 spring: datasource: url: jdbc:mysql://localhost:3306/one?useSSL=true driver: com.mysql.jdbc.Driver username: root password: root type: com.alibaba.druid.pool.DruidDataSource http: encoding: enabled: true charset: UTF-8 注意下冒号后面有一个空格的,如果使用idea的话会有明显的颜色变化 上面配置了两组数据 spring.datasource.*** spring,http.encoding.**** 自己使用的时候注意下格式,这两个只存在一个就可以了。 修改端口号的话 使用server.port这个属性修改
完整的pom文件
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>top.by</groupId> <artifactId>springboot04</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot04</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <!--后面关于springboot的依赖不需要定义版本 都在 parent中定义好了--> <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> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--druid 连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.26</version> </dependency> </dependencies> <!--springboot 编译插件--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>pom文件中添加 完整的pom文件 最下面会有