2016-11-18 3 views
-1

Как я могу получить здесь свою ценность и использовать ее в другом классе? Я хотел создать класс, который обрабатывает все аннотации @Value, тогда другие классы могут получить эти значения из этого класса. Я изменю из основного класса в новый класс, как только я узнать, как получить значения из другого классаКак я могу использовать аннотации значений в другом классе?

Как я могу получить эти переменные

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class WebProperties { 

     @Value("${Application}") 
     private String app;  
     @Value("${APP_MEMORY_GREP_FOLDERS_APP}") 
     private String appFolder;   
     @Value("${APP_MEMORY_GREP_FOLDERS_OPT}") 
     private String optFolder; 
     //getters and setters 
}} 

Для печати в основной класс

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 

    @Value("${Application}") 
    private String app; 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

    @PostConstruct 
    public void postConstruct() { 
     System.out.print("SampleApplication started: " + app); 
    } 
} 

Без того, чтобы позвонить @value снова

+0

Почему вы просто не вводите его в другой класс, где это необходимо? – Reimeus

ответ

4

Y ou может создать новый класс свойств, аннотированный с помощью @Configuration. Там вы помечаете свои поля с помощью @Value со всеми свойствами, которые вы хотите. Этот класс может быть автообновлен во всех других классах весеннего компонента, где необходимы свойства.

Это класс Configuration, где я сопоставить свойства моего файла application.properties:

@Configuration 
public class MyProperties{ 

    @Value("{my.property}") 
    public String myProperty; 
} 

Он может быть использован следующим образом:

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 

@Autowired 
private MyProperties props; 

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 

@PostConstruct 
public void postConstruct() { 
    System.out.print("Print my property: " + props.myProperty); 
} 
} 

Это работает для меня. Надеюсь, это поможет вам.

+0

Когда я делаю @autowired WebProperties, как я могу получить переменную и значения из этого класса? – Jesse

+0

Сделать поля общедоступными или использовать геттеры – pDer666

+0

У меня есть получатели и сеттеры. Когда я извлекаю значение из другого класса, он возвращает null. – Jesse

Смежные вопросы