SpringBoot属性注入和JSP模板集成
1. 属性注入
基本类型注入
InjectionController
/ * 用来测试属性注入 */@RestControllerpublic class InjectionController { @Value("${name}") private String name; @Value("${age}") private Integer age; @Value("${price}") private Double price; @Value("${birthday}") private Date birthday; @Value("${sex}") private Boolean sex; @Value("${qqs}") private String[]qqs; @Value("${lists}") List<String> lists; @Value("#{${maps}}") Map<String, String> maps; // 注意:在注入map集合时 配置文件中要使用json格式赋值 在注入时必须使用 "#{${xxx}}" 进行获取 @RequestMapping("inject") public String inject(){ System.out.println("inject ok"); System.out.println("name = " + name); System.out.println("age = " + age); System.out.println("birthday = " + birthday); System.out.println("price = " + price); System.out.println("sex = " + sex); System.out.println("遍历数组"); for (String qq : qqs) { System.out.println("qq = " + qq); } System.out.println("================="); System.out.println("遍历list"); lists.forEach(li -> System.out.println("li = " + li)); System.out.println("================="); System.out.println("遍历map"); maps.forEach((key, value) -> System.out.println("key = " + key + "value = " + value)); System.out.println("================="); return "inject ok"; }}
application.yml配置文件
server: port: 8989 servlet: context-path: /springboot_day2# 声明注入值name: 小陈age: 23price: 23.23birthday: 2012/12/12 12:12:12 # 注意:默认的日期格式为 yyyy/mm/dd HH:MM:sssex: trueqqs: 6099,7088,8009 #注入数组时候,多个元素用 "," 逗号隔开lists: xiaoming,xiaochen,xiaosun,xiaohong #注入list时候,多个元素用 "," 逗号隔开 和数组一致maps: "{'aa':'小胡','bb':'
对象类型注入
InjectionObjectController
/ * 测试对象注入 */@RestController@ConfigurationProperties("orders") //修饰范围: 用在类上 作用: 用来将指定前缀的属性 注入到当前对象中属性名一致的属性中 //注意:使用这个注解为属性一次性赋值,必须为属性提供SET方法 //写成@ConfigurationProperties(value = "orders")或@ConfigurationProperties(prefix = "orders")和上面是一样的public class InjectionObjectController { private Integer id; private String name; private Double price; public void setId(Integer id) { this.id = id; } public void setName(String name) { this.name = name; } public void setPrice(Double price) { this.price = price; } @RequestMapping("injectObject") public String injectObject(){ System.out.println("injectObject ok"); System.out.println("id = " + id); System.out.println("name = " + name); System.out.println("price = " + price); return "injectObject ok"; }}
application.yml
在pom.xml文件中引入下面这个依赖之后重启springboot应用且对象中属性已经写好然后在application.yml中写前缀的属性时就有提示了。
引入依赖构建自定义注入元数据
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>
2. JSP模板集成
在SpringBoot框架中默认模板推荐使用Thymeleaf模板,这里我们优先讲与JSP模板集成
在pom.xml文件中引入jsp的集成jar包
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version></dependency><dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId></dependency>
创建webapp包,添加相应的jsp
在application.yml配置文件里配置视图解析器(配置前缀和后缀)
# 配置jsp视图前缀和后缀 解析结果:前缀 + controller返回值 + 后缀spring: mvc: view: prefix: / # 视图前缀 suffix: .jsp # 视图后缀
在pom.xml中引入jsp运行插件
<build> <finalName>springboot_day1</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins></build>
第一种方式使用插件启动访问JSP页面
第二种方式使用idea中指定工作目录启动 访问JSP
之后就像平常一样直接点击run就可以运行了
修改jsp无须重启应用
# 把开发模式打开server: servlet: jsp: init-parameters: development: true