第一讲我们已经讲解了入门Demo,这一讲我们主要讲解包含以下内容
- 项目内一些属性配置
- 自定义属性配置
- ConfigurationProperties配置
(1)第一个工程创建的时候会自动在工程下创建application.properties文件,如下图,那么该文件有什么作用呢?
该文件主要用于参数配置,类似于web.xml一样,可以配置不同的参数,而且比web.xml 更强大。首先分析一下,demo首次访问项目地址是 http://localhost:8080/,
我们并没有加项目路径,其实,这是springboot默认的。如果要加上项目路径,就只要在application.properties中配置即可,接下来我们将加上项目路径以及更改端口访问。
在application.properties中配置如下
重启项目访问 http://localhost:8888/hello/hello,结果如下图,正常可以访问。
(2)自定义属性配置,日常开发中,我们知道,有一些参数是需要配置的,比如jdbc参数。那么我们是如何在application.properties中配置以及在程序是获取呢?
首先在application.properties中配置参数如下
在Demo这个类中增加相应代码。获取配置文件中的参数的值。代码如下:
重启服务,然后访问 http://localhost:8888/hello/showDbMsg,结果如下,这就是自定义属性配置。
(3)在上面我们已经获取到配置文件的参数了,但是有一个问题,Demo类使用了这几个参数,如果有上百个类也要引用,还需要定义上百次变量,这可不是好事情。所以我们要通过一种其他的方式来获取,即是抽取变量定义到一个实体类中,
然后使用@ConfigurationProperties注解,自动解析参数给实体类赋值。当然application.properties定义的还是不变。
新增实体类MySqlProperties
package com.example.demo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "mysql") public class MySqlProperties { private String jdbcName; private String userName; private String password; private String jdbcUrl; public String getJdbcName() { return jdbcName; } public void setJdbcName(String jdbcName) { this.jdbcName = jdbcName; } public String getJdbcUrl() { return jdbcUrl; } public void setJdbcUrl(String jdbcUrl) { this.jdbcUrl = jdbcUrl; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "MySqlProperties [jdbcName=" + jdbcName + ", jdbcUrl=" + jdbcUrl + ", userName=" + userName + ", password=" + password + "]"; } }
demo类改造后如下:
package com.example.demo; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class Demo { @Resource private MySqlProperties mySqlProperties; @ResponseBody @RequestMapping("/showDbMsg") public String showDbMsg() { return mySqlProperties.toString(); } @ResponseBody @RequestMapping("/hello") public String name() { return "hello spring boot"; } }
重启容器后访问,http://localhost:8888/hello/showDbMsg,结果如下图,能正常访问。