这一章的原始配置方法
@ImportResource(“classpath:config.xml”)
@Value(“${}”)
配置文件的映入
Java容器注解@ImportResource和@Value
一、通过xml文件进行配置。
<context:property-placeholder location="资源文件的存放位置"/>:<beans>进行配置,作用是加载资源文件(properties——Key-Value类型资源文件),然后就可以通过${Key},引用资源文件中的内容(如数据库的加载)。
代码:
public class Store {
public Store(String username,String password,String url){
System.out.println(username);
System.out.println(password);
System.out.println(url);
}
<context:property-placeholder location="classpath:/config.properties"/>
<bean id="store" class="Bean.Store">
<constructor-arg name="username" value="${jdbc.username}"></constructor-arg>
<constructor-arg name="password" value="${jdbc.password}"></constructor-arg>
<constructor-arg name="url" value="${jdbc.url}"></constructor-arg>
</bean>
测试:
@Test
public void test(){
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-ioc.xml");
Store s=ac.getBean("store",Store.class);
System.out.println(s);
}
二、通过注解进行配置前提xml已经编写(配置类中添加@ImportResource("classpath:config.xml") )。
步骤1:配置类中添加@ImportResource,配置类中定好要用到的属性,并在属性上添加@Value("$(Key)")。
代码:
@Configuration
@ImportResource("classpath:/spring-ioc.xml")
public class StoreConfig {
@Value("${url}")
private String url;
@Value("${username}") //取到的是当前操作系统的用户名,所以不要使用username这个名。
private String username;
@Value("${password}")
private String password;
@Bean(name="store")
public Store getStoreBean(){
return new Store(username,password,url);
}
}
步骤二:这种注入依赖于使用@Bean标签,并返回有参构造函数对象,通过参数对Bean进行注入。
代码:xml代码:
<beans>标签里添加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
http://www.springframework.org/schema/context/spring-context.xsd" ,
<beans>中添加
<context:property-placeholder location="classpath:/config.properties"/>
java代码:
public class Store {
public Store(String username,String password,String url){
System.out.println(username);
System.out.println(password);
System.out.println(url);
}
配置文件:
username=\u5C0F\u660E
password=123456
url=localhost
<beans> <context:annotation-config/> <context:property-placeholder location="classpath:/com/acme/jdbc.properties"/> <bean class="com.acme.AppConfig"/> <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> </beans>
加载资源文件
如何使用@ImportResource 和 @Value注解进行资源文件读取
@ImportResource和@Value对资源文件读取并赋值
@Configuration @ImportResource("classpath:config.xml") public class StoreConfig{ @Value("${url}") private String url; ...... @Bean public MyDriverManager mydrivermanager() { return new MyDeiverManager(url,username,password); } }
这节讲的是通过配置文件初始化 bean 对象。要用到 @configuration ,@importResource 以及 @value。@importResource 注解中指明 xml配置文件的路径。另外在 xml 配置文件中配置 location 指明配置文件的路径。
使用@Configuration一般都是配置类,即对某个类的具体参数进行配置和初始化。
Java容器注解@ImportResource和@Value
一、通过xml文件进行配置。
<context:property-placeholder location="资源文件的存放位置"/>:<beans>进行配置,作用是加载资源文件(properties——Key-Value类型资源文件),然后就可以通过${Key},引用资源文件中的内容(如数据库的加载)。
代码:
public class Store {
public Store(String username,String password,String url){
System.out.println(username);
System.out.println(password);
System.out.println(url);
}
<context:property-placeholder location="classpath:/config.properties"/>
<bean id="store" class="Bean.Store">
<constructor-arg name="username" value="${jdbc.username}"></constructor-arg>
<constructor-arg name="password" value="${jdbc.password}"></constructor-arg>
<constructor-arg name="url" value="${jdbc.url}"></constructor-arg>
</bean>
测试:
@Test
public void test(){
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-ioc.xml");
Store s=ac.getBean("store",Store.class);
System.out.println(s);
}
二、通过注解进行配置前提xml已经编写(配置类中添加@ImportResource("classpath:config.xml") )。
步骤1:配置类中添加@ImportResource,配置类中定好要用到的属性,并在属性上添加@Value("$(Key)")。
代码:
@Configuration
@ImportResource("classpath:/spring-ioc.xml")
public class StoreConfig {
@Value("${url}")
private String url;
@Value("${username}") //取到的是当前操作系统的用户名,所以不要使用username这个名。
private String username;
@Value("${password}")
private String password;
@Bean(name="store")
public Store getStoreBean(){
return new Store(username,password,url);
}
}
步骤二:这种注入依赖于使用@Bean标签,并返回有参构造函数对象,通过参数对Bean进行注入。
代码:xml代码:
<beans>标签里添加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
http://www.springframework.org/schema/context/spring-context.xsd" ,
<beans>中添加
<context:property-placeholder location="classpath:/config.properties"/>
java代码:
public class Store {
public Store(String username,String password,String url){
System.out.println(username);
System.out.println(password);
System.out.println(url);
}
配置文件:
username=\u5C0F\u660E
password=123456
url=localhost
笔记比记笔记
${username}取到的是当前登录操作系统的用户名,不是文件中对应的username值。所以为了区别,一般文件中都会使用jdbc.username作为key.
对于资源文件中的值的引用,如何在配置类中体现与配置文件相同功能。涉及的注解是@ImportResource和@Value
加载资源文件以及读取资源文件的两种方式。
方式一:通过配置文件
(1)<context:property-placeholder location="" ></context:property> 引入加载资源文件;
(2)通过${key}方式获取配置文件中的值;
示例:将classpath:/com/acme/jdbc.properties配置文件中jdbc的url,username,password的值分别获取并装配到DriverManagerDataSource类中的url,username,password属性中去。
方式二:通过注解方式
(1)将一个用于装载资源文件的类用@Configuration注解,并通过注解@ImportResource引入配置文件;
(2)获取配置文件中的值是通过@Value("${key}")的方式获取值,@Value要标注到属性上,才能自动将配置文件的值装配到属性上。
注意: 用@Value获取配置文件值的时候要注意,如果配置文件中key为“username”,此时spring会读取登录当前操作系统的用户名,所以此种情况要注意,不要用username做key
利用@ImportResource、@Value加载资源文件:
利用@ImportResource、@Value加载资源文件:
方法一:XML文件中进行配置
需要先在XML文件中用property-placeholder加载资源文件,在bean中注入属性值
方法二:注解配置
先在XML文件中用property-placeholder加载资源文件,再在@Configuration注解的类前加上注解@ImportResourc("XML文件路径"),再利用@Value(属性值)注解给成员变量赋值,利用@Bean注解的方法添加Bean
也可以通过注解的方式加载资源文件
<context:property-placeholder />作用是加载资源文件
@ImportResource和@Bean配套使用
@ImportResource 加载资源文件 根据@Value注释
@Value("${}") {}里的变量对应.properties文件里的key
引入外部配置文件,读取其中的键值对的两种方式。
Spring引用加载jdbc.properties内容的方式
xml配置的方式
注解的方式
资源文件引入及取值
22222
11111
通过xml声明加载properties文件
注意:避免与操作系统重复。一般使用jdbc.username而不是username