本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 属性注入
基本类型注入
InjectionController
/**
* 用来测试属性注入
*/
@RestController
public 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: 23
price: 23.23
birthday: 2012/12/12 12:12:12 # 注意:默认的日期格式为 yyyy/mm/dd HH:MM:ss
sex: true
qqs: 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包
<!--c标签库-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--让内嵌tomcat具有解析jsp功能-->
<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>
<!--引入springboot插件 可以正确打包 显示jsp-->
<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