Spring中@ImportResource和@Value加载资源文件

来源:互联网 发布:淘宝晚礼服 编辑:程序博客网 时间:2024/05/01 00:38

讲注解之前,我们首先来看看用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会使用计算机名





0 0
原创粉丝点击