[SPRING] spring-context.xml 및 persistence.xml에서 .properties로드
SPRINGspring-context.xml 및 persistence.xml에서 .properties로드
spring-context.xml과 JPA persistence.xml에서 .properties 파일을 참조하는 방법이 있습니까?
봄 컨텍스트 파일에서이 예제를 어디에서 보았을 것입니다.하지만 그 위치를 기억할 수는 없습니다. 어쩌면 누군가가 이것을 알고 있을까요? persistence.xml에 대해서는 실제로 작동하는지 확실하지 않습니다.
내 목표는 개발 및 배포 구성 사이의 일부 속성을 변경하는 것입니다. 내가 현재 가지고있는 아이디어는 템플릿 구성에서 개미를 통해 파일의 모든 속성을 수동으로 대체하는 것입니다. 비록 이것을 할 수있는 더 좋은 방법이 있어야합니다. :)
해결법
-
==============================
1.PropertyPlaceholderConfigurer를 사용하여 Spring 빈 정의 파일에서 외부 속성 파일을 참조 할 수있다. Spring의 JPA 지원으로 persistence.xml의 내용을 전부는 아니더라도 bean 파일 자체에 통합 할 수 있지만 JPA persistence.xml에서 작동한다고 생각하지 않습니다.이 경우 제대로 작동합니다.
PropertyPlaceholderConfigurer를 사용하여 Spring 빈 정의 파일에서 외부 속성 파일을 참조 할 수있다. Spring의 JPA 지원으로 persistence.xml의 내용을 전부는 아니더라도 bean 파일 자체에 통합 할 수 있지만 JPA persistence.xml에서 작동한다고 생각하지 않습니다.이 경우 제대로 작동합니다.
-
==============================
2.빌드를 사용하여 persistence.xml의 prod 또는 dev 버전을 작성하는 대신 모든 특성 설정을 이동하십시오 당신의 봄 내용에.
빌드를 사용하여 persistence.xml의 prod 또는 dev 버전을 작성하는 대신 모든 특성 설정을 이동하십시오 당신의 봄 내용에.
내 persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="JPAService" transaction-type="RESOURCE_LOCAL"> </persistence-unit> </persistence>
내 봄 콘텐트에서, 나는 PropertyPlaceholderConfigurer를 사용하여 dev / prod 속성 값을 읽고 이것을 entityManagerFactory 빈
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/> <bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/> <bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> <property name="ignoreResourceNotFound" value="true"/> <property name="locations"> <list> <value>classpath:dev.properties</value> </list> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${datasource.driverClassName}"/> <property name="url" value="${datasource.url}"/> <property name="username" value="${datasource.username}"/> <property name="password" value="${datasource.password}"/> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceXmlLocation" value="classpath:./META-INF/persistence.xml"/> <property name="persistenceUnitName" value="JPAService"/> <property name="dataSource" ref="dataSource"/> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="databasePlatform" value="org.hibernate.dialect.OracleDialect"/> <property name="showSql" value="true" /> <property name="generateDdl" value="true"/> </bean> </property> <property name="jpaProperties"> <!-- set extra properties here, e.g. for Hibernate: --> <props> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> <property name="dataSource" ref="dataSource"/> </bean> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="false"/> </beans>
from https://stackoverflow.com/questions/1834954/loading-properties-in-spring-context-xml-and-persistence-xml by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 mvc 3.0으로 핸들러 인터셉터를 등록하는 방법은 무엇입니까? (0) | 2018.12.31 |
---|---|
[SPRING] 봄 MVC 샘플 웹 응용 프로그램 (0) | 2018.12.31 |
[SPRING] ServletContext 리소스를 열 수 없습니다. (0) | 2018.12.31 |
[SPRING] 리소스를로드하고 그 내용을 Spring의 문자열로 사용하려면 어떻게해야합니까? (0) | 2018.12.31 |
[SPRING] 스프링 XmlBeanFactory가 사용되지 않습니다. (0) | 2018.12.31 |