springBoot配置
概述
虽然说springBoot讲究“约定大于配置”,但有时或多或少也需要一些额外的配置项,比如说数据库配置,队列配置,缓存配置等等。springBoot的全局配置文件为application.properties
自定义配置
application.properties,一些常量配置也可以写在这里
date.year = 2019 date.month = 7 date.day = 29 date.hour = 10 date.minute = 29
通过注解 “@Value(${config.name})”绑定到你想要的属性上面去
package com.xmlxy.firstspringbootproject; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /*测试类 2019-7-29*/ @RestController public class DemoController { @Value("${date.year}") String year; @Value("${date.month}") String mouth; @Value("${date.day}") String day; @Value("${date.hour}") String hour; @Value("${date.minute}") String minute; @RequestMapping(value = "/demo",method = RequestMethod.GET) public String demo() { return "Hello SpringBoot"; } @RequestMapping(value = "/demo1",method = RequestMethod.GET) public String demo1() { return year + "." + mouth + "." + day + " " + hour + ":" + minute; } }
通过 127.0.0.1:8080/demo1 访问,可以看到我们配置中的值被绑定到属性中去了
但是我们会发现,如果需要绑定的值很多,一个个绑定会累到死,所以springBoot提供绑定一个对象bean,新建Config.java
package com.xmlxy.bean; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "date") @Data public class Config { private String year; private String month; private String day; private String hour; private String minute; }
如果IDEA没配置lombok可以百度配置一下,这样就省得写get and set的一些函数,然后在改下DemoController.class类
package com.xmlxy.firstspringbootproject; import com.xmlxy.bean.Config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /*测试类 2019-7-29*/ @ComponentScan("com.xmlxy.bean") @RestController public class DemoController { @Autowired private Config config; @RequestMapping(value = "/demo",method = RequestMethod.GET) public String demo() { return "Hello SpringBoot"; } @RequestMapping(value = "/demo1",method = RequestMethod.GET) public String demo1() { return config.getYear() + "." + config.getMonth() + "." + config.getDay() + " " + config.getHour() + ":" + config.getMinute(); } }
输出的结果与上面一致。而且在配置文件中各个属性的参数是可以互相引用的
application.properties
date.year = 2019 date.month = 7 date.day = 29 date.hour = 14 date.minute = 54 date.desc = ${date.year}.${date.month}.${date.day} ${date.hour}:${date.minute}
DemoController.java新添加一个例
package com.xmlxy.firstspringbootproject; import com.xmlxy.bean.Config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /*测试类 2019-7-29*/ @ComponentScan("com.xmlxy.bean") @RestController public class DemoController { @Autowired private Config config; @Value("${date.desc}") private String desc; @RequestMapping(value = "/demo",method = RequestMethod.GET) public String demo() { return "Hello SpringBoot"; } @RequestMapping(value = "/demo1",method = RequestMethod.GET) public String demo1() { return config.getYear() + "." + config.getMonth() + "." + config.getDay() + " " + config.getHour() + ":" + config.getMinute(); } @RequestMapping(value = "/demo2",method = RequestMethod.GET) public String demo2() { return desc; } }
访问 http://127.0.0.1:8080/demo2
随机数
通过${random}来产生随机数,包括int值,long等,支持属性的随机值。
date.year = 2019 date.month = 7 date.day = 29 date.hour = 14 date.minute = 54 date.desc = ${date.year}.${date.month}.${date.day} ${date.hour}:${date.minute} date.value = ${random.int}
DemoController.java
package com.xmlxy.firstspringbootproject; import com.xmlxy.bean.Config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /*测试类 2019-7-29*/ @ComponentScan("com.xmlxy.bean") @RestController public class DemoController { @Autowired private Config config; @Value("${date.desc}") private String desc; @Value("${date.value}") private int value; @RequestMapping(value = "/demo",method = RequestMethod.GET) public String demo() { return "Hello SpringBoot"; } @RequestMapping(value = "/demo1",method = RequestMethod.GET) public String demo1() { return config.getYear() + "." + config.getMonth() + "." + config.getDay() + " " + config.getHour() + ":" + config.getMinute(); } @RequestMapping(value = "/demo2",method = RequestMethod.GET) public String demo2() { return desc; } @RequestMapping(value = "/demo3",method = RequestMethod.GET) public String demo3() { return String.valueOf(value); } }
访问 http://127.0.0.1:8080/demo3 得
自定义配置文件
引入自定义的配置文件jdbc.properties
jdbc.url = 10.105.9.119
将jdbc的配置文件引入
package com.xmlxy.firstspringbootproject; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.PropertySource; @SpringBootApplication @PropertySource(value = "classpath:jdbc.properties",encoding = "utf-8") public class FirstSpringbootProjectApplication { public static void main(String[] args) { SpringApplication.run(FirstSpringbootProjectApplication.class, args); } }
测试获取下url属性值
package com.xmlxy.firstspringbootproject; import com.xmlxy.bean.Config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /*测试类 2019-7-29*/ @ComponentScan("com.xmlxy.bean") @RestController public class DemoController { @Autowired private Config config; @Value("${date.desc}") private String desc; @Value("${date.value}") private int value; @Value("${jdbc.url}") private String url; @RequestMapping(value = "/demo",method = RequestMethod.GET) public String demo() { return "Hello SpringBoot"; } @RequestMapping(value = "/demo1",method = RequestMethod.GET) public String demo1() { return config.getYear() + "." + config.getMonth() + "." + config.getDay() + " " + config.getHour() + ":" + config.getMinute(); } @RequestMapping(value = "/demo2",method = RequestMethod.GET) public String demo2() { return desc; } @RequestMapping(value = "/demo3",method = RequestMethod.GET) public String demo3() { return String.valueOf(value); } @RequestMapping(value = "/demo4",method = RequestMethod.GET) public String demo4() { return url; } }
jdbc连接数据库
pom.xml引入jdbc依赖支撑
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
application.properties
date.year = 2019 date.month = 7 date.day = 29 date.hour = 14 date.minute = 54 date.desc = ${date.year}.${date.month}.${date.day} ${date.hour}:${date.minute} date.value = ${random.int} spring.datasource.url = jdbc:mysql://10.105.9.119:3306/hwc_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver spring.datasource.username = root spring.datasource.password = DsideaL147258369
dao接口
TestDao.java
package com.xmlxy.dao; import com.xmlxy.bean.TestData; public interface TestDao { int add(TestData testDao); }
TestDaoImp.java
package com.xmlxy.dao; import com.xmlxy.bean.TestData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Repository; import java.util.HashMap; import java.util.Map; @Repository public class TestDaoImp implements TestDao { @Autowired private NamedParameterJdbcTemplate jdbcTemplate; @Override public int add(TestData testData) { String sql = "INSERT t_hwc_db(name,age) VALUES(:name,:age)"; Map<String,Object> param = new HashMap<>(); System.out.printf("本次插入的值===>" + testData.getName() + ",年龄为==>" + testData.getAge()); param.put("name",testData.getName()); param.put("age",testData.getAge()); return jdbcTemplate.update(sql,param); } }
访问接口测试
package com.xmlxy.firstspringbootproject; import com.xmlxy.bean.Config; import com.xmlxy.bean.TestData; import com.xmlxy.dao.TestDaoImp; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /*测试类 2019-7-29*/ @ComponentScan("com.xmlxy.bean") @ComponentScan("com.xmlxy.dao") @RestController public class DemoController { @Autowired private Config config; @Value("${date.desc}") private String desc; @Value("${date.value}") private int value; @Value("${jdbc.url}") private String url; @Autowired private TestDaoImp testDaoImp; @RequestMapping(value = "/demo",method = RequestMethod.GET) public String demo() { return "Hello SpringBoot"; } @RequestMapping(value = "/demo1",method = RequestMethod.GET) public String demo1() { return config.getYear() + "." + config.getMonth() + "." + config.getDay() + " " + config.getHour() + ":" + config.getMinute(); } @RequestMapping(value = "/demo2",method = RequestMethod.GET) public String demo2() { return desc; } @RequestMapping(value = "/demo3",method = RequestMethod.GET) public String demo3() { return String.valueOf(value); } @RequestMapping(value = "/demo4",method = RequestMethod.GET) public String demo4() { return url; } @RequestMapping(value = "/demo5",method = RequestMethod.GET) public String demo5() { TestData testData = new TestData(); testData.setName("ipad"); testData.setAge(18); testDaoImp.add(testData); return "插入成功"; } }
访问 http://127.0.0.1:8080/demo5 查看数据库,可以发现数据已经插入