1.概述
Spring开启注解方式DI,可以通过@Value()方式赋值,但是这样值就被写死在代码中了,增加了耦合度,和后期维护的难度。Spring 支持在外部设置属性值(基本数据类型和String类型其他集合类型可以采用预定义集合数据),就解决了这种问题。
2.代码示例
如下Hero类的值就是写死在 代码中的
public class Hero {
@Value("张三")
private String name;
@Value("19")
private int age;
@Override
public String toString() {
return "Hero{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
下面采用配置文件的方式灵活设置值
类Hero
package cn.ww.domain;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Hero {
@Value("${name}")
private String name;
@Value("${age}")
private int age;
@Override
public String toString() {
return "Hero{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
web.xml中的代码,file-encoding 注意中文时,要设置编码,否则会出现乱码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--配置注解扫描-->
<context:component-scan base-package="cn.ww.domain"/>
<!--开启注解DI-->
<context:annotation-config/>
<!--加载额外信息-->
<context:property-placeholder location="my.properties" file-encoding="gbk"/>
</beans>
配置文件的位置及内容
运行结果: