讲注解之前,我们首先来看看用xml如何加载资源文件
<beans>
<context:annotation:config/>
<context:property-placeholder location="classpath:/com.acme/jdbc.properties"/>
<bean class="com.acme.pro">
<property name="url" value=“$(jdbc.url)”>
</bean>
</beans>
context:property-placeholder 这个表明加载哪个资源文件,value=“$(jdbc.url)”则是加载资源文件里面的值
实际上我们也可以通过@ImportResource和@Value来加载资源文件
这里我们举一个例子,创建一个实现类,中间类,测试类,config.xml,config配置文件
config.xml:
<?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
http://www.springframework.org/schema/context/spring-context.xsd" >
<context:property-placeholder location="classpath:/jdbc.properties"/>
<context:component-scan base-package="com.imooc.beanannotation"></context:component-scan>
</beans>
实现类:
public class MyDriveManager {
public MyDriveManager(String url,String username,String password)
{
System.out.println("url:"+url);
}
}
中间类:
package com.imooc.beanannotation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
@ImportResource("classpath:config.xml")
public class StoreConfig {
@Value("$(jdbc.url)")
private String url;
private String username;
private String password;
@Bean
public MyDriveManager myDriveManager()
{
return new MyDriveManager(url,username,password);
}
}
测试类:
package com.imooc.beanannotation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestConfig {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("config.xml");
MyDriveManager myDriveManager=ctx.getBean("myDriveManager",MyDriveManager.class);
}
}
这里还有一点要特别说明的,在properties中最好写 jdbc.username 直接写username会使用计算机名