Spring Boot项目属性配置
前面已经讲解过了helloWord的实现。
今天主要玩下application.properties项目的配置文件。
点进去我会发现这个文件空空如也:
server.port = 8888 server.context-path = /HelloWorld
tomcat的默认端口是8080,默认路径是根目录/。
我们现在改成端口8080以及上下文路径 /HelloWorld。
改完后保存,启动HelloWorldApplication类。
页面输入http://localhost:8888/HelloWorld/hello
你大爷就出来了。
SpringBoot支持自定义属性
我们在application.properties中加一个lol属性,属性值"泰达米尔"
在配置文件中添加:
lol = "\u6CF0\u8FBE\u7C73\u5C14"
这是对中文字节编码处理了。
package com.zznode.demo; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @Value("$lol") public String lol; @RequestMapping("/hello") public String say(){ return lol; } }
页面里我们定义然后配置一个属性值,调用请求,可以直接返回配置的值。
这是比较方便的功能。
我们重启HelloWorldApplication类,
页面输入http://localhost:8888/HelloWorld/hello
显示下面内容:
假如我们需要配置多个属性呢,比如musql的jdbc连接配置
将下面四个属性写到配置文件中
mysql.jdbcName=com.mysql.jdbc.Driver mysql.dbUrl=jdbc:mysql://localhost:3306/db mysql.userName=root mysql.password=123456
这里依葫芦画瓢,和上面一样Controller里写四个属性。
package com.zznode.demo; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @Value("${lol}") public String lol; @Value("${mysql.jdbcName}") private String jdbcName; @Value("${mysql.dbUrl}") private String dbUrl; @Value("${mysql.userName}") private String userName; @Value("${mysql.password}") private String password; @RequestMapping("/hello") public String say(){ return lol; } @RequestMapping("/showJdbc") public String showJdbc(){ return "mysql.jdbcName:"+jdbcName+"<br/>" +"mysql.dbUrl:"+dbUrl+"<br/>" +"mysql.userName:"+userName+"<br/>" +"mysql.password:"+password; } }
我们重启HelloWorldApplication类,
页面输入http://localhost:8888/HelloWorld/hello
显示下面内容:
貌似这个操作好多次了,应该把这操作封装到一个方法里。
到这里可能就会有人有疑问了。假如属性特别多,要写一大串,每个地方都使用,每个地方都要写这么多。
我这里有个ConfigurationProperties配置方式
新建一个MysqlProperties类把所有属性配置上去
package com.zznode.demo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * Mysql属性配置文件 * * @author user * */ @Component @ConfigurationProperties(prefix = "msyql") public class MysqlProperties { private String jdbcName; private String dbUrl; private String userName; private String password; public String getJdbcName() { return jdbcName; } public void setJdbcName(String jdbcName) { this.jdbcName = jdbcName; } public String getDbUrl() { return dbUrl; } public void setDbUrl(String dbUrl) { this.dbUrl = dbUrl; } 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; } }
执行前缀mysql以及加上@Component为组件,方便其他地方注入。
HelloWorldController里改下
package com.zznode.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @Value("${lol}") public String lol; @Autowired private MysqlProperties mysqlProperties; @RequestMapping("/hello") public String say(){ return lol; } @RequestMapping("/showJdbc") public String showJdbc(){ return "mysql.jdbcName:"+mysqlProperties.getJdbcName()+"<br/>" +"mysql.dbUrl:"+mysqlProperties.getDbUrl()+"<br/>" +"mysql.userName:"+mysqlProperties.getUserName()+"<br/>" +"mysql.password:"+mysqlProperties.getPassword(); } }
重启新项目可以看到和上面的一样的效果,这样很多地方需要用的时候只需要调用类就ok啦。