복붙노트

[SPRING] Spring : constructor-arg를 annotation으로 대체하는 방법은 무엇입니까? [복제]

SPRING

Spring : constructor-arg를 annotation으로 대체하는 방법은 무엇입니까? [복제]

나는 annotation에 의해 XML applicationContext 설정을 대체하고 싶다.

간단한 빈을 고정 된 생성자 인수로 대체하는 방법?

예 :

<bean id="myBean" class="test.MyBean">
    <constructor-arg index="0" value="$MYDIR/myfile.xml"/>
    <constructor-arg index="1" value="$MYDIR/myfile.xsd"/>
</bean>

@Value에 대한 설명을 읽는 중이지만 일부 고정 값을 전달하는 방법을 이해하지 못했습니다 ...

웹 애플리케이션이 전개 될 때이 빈을로드 할 수 있습니까?

고맙습니다.

해결법

  1. ==============================

    1.나는 네가 뭘했는지 생각해.

    나는 네가 뭘했는지 생각해.

    @Component
    public class MyBean {
        private String xmlFile;
        private String xsdFile;
    
        @Autowired
        public MyBean(@Value("$MYDIR/myfile.xml") final String xmlFile,
                @Value("$MYDIR/myfile.xsd") final String xsdFile) {
            this.xmlFile = xmlFile;
            this.xsdFile = xsdFile;
        }
    
        //methods
    }
    

    시스템 등록 정보를 통해 이러한 파일을 구성 할 수도 있습니다. @Value 주석을 사용하여 PropertyPlaceholderConfigurer 및 $ {} 구문을 사용하여 시스템 속성을 읽을 수 있습니다.

    이렇게하려면 @Value 주석에 다른 String 값을 사용할 수 있습니다.

    @Value("${my.xml.file.property}")
    @Value("${my.xsd.file.property}")
    

    그러나 당신은 또한 당신의 시스템 프로퍼티에 다음의 프로퍼티가 필요합니다 :

    my.xml.file.property=$MYDIR/myfile.xml
    my.xsd.file.property=$MYDIR/myfile.xsd
    
  2. from https://stackoverflow.com/questions/13725165/spring-how-to-replace-constructor-arg-by-annotation by cc-by-sa and MIT license