때로는 스프링 코드에서 속성 구성 파일을 직접 읽어야하므로 어떻게해야합니까? 아래의 특정 콘텐츠를 살펴 보겠습니다.
우리는 스프링이 @Value의 속성 값을 읽을 수 있다는 것을 알고 있습니다. 구성 파일에서 구성합니다.
org.springframework.beans.factory.config.propertyplaceholderconfigurer
<bean id = "propertyconfigurer"> <property name = "location"> value> classpath : config.properties </value> </property> </bean>
그런 다음 속성의 중간 값을 얻으려면 이것들을 사용해야 할 때 다음과 같이 사용할 수 있습니다.
@Value ( "$ {sql.name}") 개인 문자열 sqlname;그러나 이것에 문제가 있습니다. 구성 파일에서 값을 사용할 때마다 로컬 변수를 선언해야합니다. 코드를 사용하여 구성 파일의 값을 직접 읽는 방법이 있습니까?
답은 PropertyPlaceHolderConfigurer를 다시 작성하는 것입니다
공개 클래스 PropertyPlaceHolder 확장 PropertyPlaceHolderConfigurer {private static map <String, String> PropertyMap; @override protected void processProperties (configurableBealBeanFactory beanFactoryToprocess, Properties Propers)는 beansexception {super.processproperties (beanfactoryToprocess, props); propertymap = new Hashmap <String, String> (); for (개체 키 : props.keyset ()) {String keystr = key.tostring (); 문자열 값 = props.getProperty (keystr); propertymap.put (키, 값); }} // 컨텍스트 속성에 액세스하기위한 정적 메소드 공용 정적 개체 getProperty (문자열 이름) {return propertymap.get (name); }}구성 파일에서 PropertyPlaceHolderConfigurer 대신 위의 클래스를 사용하십시오.
<bean id = "propertyconfigurer"> <property name = "location"> value> classpath : config.properties </value> </property> </bean>
이렇게하면 프로그래밍을 통해 코드에서 직접 얻을 수 있습니다.
PropertyPlaceHolder.getProperty ( "SQL.Name");
여러 구성 파일 인 경우 위치 속성을 구성하십시오.
<bean id = "propertyconfigurer"> <property name = "genoreSourcenotfound"value = "true"/> <property name = "list> <spature"> <list> <tocals "파일 : ./ jdbc.properties </value> value> 파일 : ./ module.config.properties </value> <classpath : jdbc.properties </value> <value> classpath*:*. config.properties </value> </list> </property> </bean>
요약
위는 Spring의 코드에 관한 모든 것이 속성 파일 인스턴스의 구문 분석을 읽습니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
Spring Instantiation Bean 프로세스 분석 및 완전한 코드 예제
Spring Factory Method Creation (Instandardization) Bean 인스턴스 코드
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!