2014-11-03 6 views
0

В моем текущем проекте Spring я ищу способ присвоить некоторое значение атрибутам некоторых из моих POJO-классов.Присвоить значение переменной на основе ее аннотации

Эта функция похожа на использование аннотаций PathVariable и ModelAttribute для некоторых параметров в методах контроллера: когда параметр аннотированный с одним из этих аннотаций, собственная система считывания значения для этого параметра и назначить переменная, без необходимости использовать <variable> = <value>.

В моем проекте, у меня есть POJO класс вроде этого:

class Class { 

    private <type> <attribute> 

    public <type> get<attribute>() { 
     return <attribute>; 
    } 

    public void set<attribute>(<type> <parameter>) { 
     <attribute> = <parameter>; 
    } 

} 

если добавить аннотацию к атрибуту (например: @Setting), когда я создаю новый экземпляр этого класса, система должен прочитать значение в файле и назначить переменной.

Любой может сказать мне, как это сделать?

+1

Это может помочь http://stackoverflow.com/questions/20782673/creating-custom-annotation-in-spring -mvc-and-getting-httpservletrequest-object –

ответ

1

Вы можете использовать Spring @PropertySource & @Value аннотации. Я имею в виду что-то вроде этого:

@Value("${sourceLocation:c:/temp/input}") 
    private String source; 

    @Value("${destinationLocation:c:/temp/output}") 
    private String destination; 

    @Autowired 
    private Environment environment; 

    public void readValues() { 
     System.out.println("Getting property via Spring Environment :" 
       + environment.getProperty("jdbc.driverClassName")); 

     System.out.println("Source Location : " + source); 
     System.out.println("Destination Location : " + destination); 

Там есть хороший уточненный blogpost here

+0

Возможно ли использовать параметр '@ Value' для возвращаемого значения существующего метода из другого класса моего приложения вместо' $ {...} '? –

+0

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Value.html в соответствии с javadoc значения. Обычно используется назначение значений полей по умолчанию, используя "# {systemProperties.myProp}" выражения стиля. Поэтому я думаю, что вам нужен метод инициализации, который аннотируется «@PostConstruct», а другой объект класса - автоматически. Вы можете проверить аннотацию @PostConstructor. – erhun

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