擴展spring註解,讀取配置文件

通過擴展spring,在service層寫註解,直接讀取屬性值。
在spring容器開啓時,直接掃描註解並設置到service的屬性上。
注意:controller得不到值,必須在service層。
因爲它擴展的是spring提供的方法,service層spring管理,
纔可以實現,而controller是springmvc無法實現。
package com.jt.common.spring.exetend;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import java.util.Properties;

public class ExtendedPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
    private Properties props;

    @Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
            throws BeansException {
        super.processProperties(beanFactory, props);
        this.props = props;
    }

    public String getProperty(String key) {
        return props.getProperty(key);
    }
}
package com.jt.common.spring.exetend;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface PropertyConfig {
    String value() default "";

    boolean required() default true;
}

在service中注入即可,前提:屬性名需要在屬性文件中定義。
spring在加載時會自動注入,前提需要在spring配置文件中加載配置文件。

<property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
                <value>classpath:env.properties</value>
                <value>classpath:httpclient.properties</value>
            </list>
        </property>
MANAGE_URL=http://manage.jt.com
@PropertyConfig
    private String MANAGE_URL;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章