spring - read property value from properties file in static field of class

后端 未结 6 1124
一向
一向 2021-02-06 12:07

I have one utility class where i have one method which requires username and password to connect other url. I need to kept that username in properties file so that i can change

6条回答
  •  执念已碎
    2021-02-06 12:55

    Read property value from properties file in static field of class using Java based spring configuration.
    Example :
    // The property file to store fields.
    user.properties
         username=Elijah Wood
         age=26
         language=English
    // This class holds the static values
    

    package org.javahive.propertyreader.example;

    public class UserDetails {
    
        static String username;
        static String age;
        static String language;
    
        public static void setUserValues(String username, String age, String language) {
            UserDetails.username = username;
            UserDetails.age = age;
            UserDetails.language = language;
        }
    }
    
    //Spring configuration class
    
    package org.javahive.propertyreader.example;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.beans.factory.config.MethodInvokingFactoryBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
    
    @Configuration
    @ComponentScan(value = { "org.javahive.propertyreader.example" })
    @PropertySource("classpath:user.properties")
    public class PropertyReaderConfig {
    
        @Value("${user}")
        private String username;
    
        @Value("${age}")
        private String age;
    
        @Value("${language}")
        private String language;
    
        @Bean
        public static PropertySourcesPlaceholderConfigurer propertyConfigIn() {
            return new PropertySourcesPlaceholderConfigurer();
        }
    
        @Bean
        public MethodInvokingFactoryBean methodInvokingFactoryBean() {
            MethodInvokingFactoryBean mifb = new MethodInvokingFactoryBean();
            mifb.setStaticMethod("org.javahive.propertyreader.example.UserDetails.setUserValues");
            mifb.setArguments(new String[] { this.username, this.age, this.language });
            return mifb;
        }
    
        /**
         * @return the name
         */
        public String getName() {
            return username;
        }
    
        /**
         * @param name
         *            the name to set
         */
        public void setName(String name) {
            this.username = name;
        }
    
        /**
         * @return the age
         */
        public String getAge() {
            return age;
        }
    
        /**
         * @param age
         *            the age to set
         */
        public void setAge(String age) {
            this.age = age;
        }
    
        /**
         * @return the language
         */
        public String getLanguage() {
            return language;
        }
    
        /**
         * @param language
         *            the language to set
         */
        public void setLanguage(String language) {
            this.language = language;
        }
    
    }
    
    //The main class.
    

    package org.javahive.propertyreader.example;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class Main {
    
        public static void main(String[] args) {
            ApplicationContext context = new AnnotationConfigApplicationContext(PropertyReaderConfig.class);
            System.out.println("User Name : " + UserDetails.username);
            System.out.println("Age : " + UserDetails.age);
            System.out.println("Language : " + UserDetails.language);
        }
    }
    

提交回复
热议问题