2016-04-14 33 views
0

Aşağıdaki ipuçlarına baktım ve orada verilen şeyleri takip ettim. Hala benim malım geçersiz kılma olmuyorYaylı Önbellek Dışa aktarma özellikleri çalışmıyor

1) Spring Boot - Externalized properties
2) Profile Specific Property Enablement
3) Spring Boot External Config

Ben erkek kedi 8.0.33 ve Bahar önyükleme marş web'de duyuyorum ve benim setenv.sh bu var

export JAVA_OPTS="$JAVA_OPTS -Dlog.level=INFO -Dspring.config.location=file:/opt/jboss/apache-tomcat-8.0.33/overrides/ -Dspring.profiles.active=dev" 

Ve geçersiz kılar Ben 2 dosya

1)var klasörüne 2) application-dev.properties

application.properties düzgün log.level bu komut çalışıyor demektir benim koduna beslenir görüyoruz o

spring.profiles.active=dev 

tek bir girişi vardır. Sadece benim geçersiz kılma neden beklendiği gibi clueless olduğum için beklendiği gibi

Benim çalışma alanında herhangi bir `PropertyPlaceholderConfigurer kodu yok. 1

'a gerek olup olmadığından emin değilim lütfen Yardım!

cevap

3

Bu özelliği, özellikleri dışlamak için kullanmıyorum. İlk olarak, yönteminiz için bir öneri deneyeceğim ve sonra ne kullandığımı göstereceğim.

Sizin yönteminiz için öneri dosya yerine dosya: /// kullanmaktır: İlkbaharda olduğu gibi// /, üç nokta eğik çizgiden geçmediğinde, özelliği tanımaz.

Sizin için bir örnek proje oluşturdum, available here with instructions.

Şimdi kullandığım yöntem için.

Her profil için bir Yapılandırma dosyası tanımlarım ve application.properties dosyasını src/main/resources altında tutuyorum.

Daha sonra her yapılandırma dosyasındaki @Profile ve @PropertySource ek açıklamalarını kullanıyorum. Örneğin

:

@Configuration 
@Profile("dev") 
@PropertySource("file:///${user.home}/.devopsbuddy/application-dev.properties") 
public class DevelopmentConfig { 

@Bean 
public EmailService emailService() { 
    return new MockEmailService(); 
} 

@Bean 
public ServletRegistrationBean h2ConsoleServletRegistration() { 
    ServletRegistrationBean bean = new ServletRegistrationBean(new WebServlet()); 
    bean.addUrlMappings("/console/*"); 
    return bean; 
} 
} 

Ve şöyle Ben de, ben ApplicationConfig çağrı tüm profiller için geçerli olan bir yapılandırma dosyası var

@Configuration 
@Profile("prod") 
@PropertySource("file:///${user.home}/.devopsbuddy/application-prod.properties") 
public class ProductionConfig { 

@Bean 
public EmailService emailService() { 
    return new SmtpEmailService(); 
} 
} 

:

@Configuration 
@EnableJpaRepositories(basePackages = "com.devopsbuddy.backend.persistence.repositories") 
@EntityScan(basePackages = "com.devopsbuddy.backend.persistence.domain.backend") 
@EnableTransactionManagement 
@PropertySource("file:///${user.home}/.devopsbuddy/application-common.properties") 
public class ApplicationConfig { 
} 

Benim src/main/resources/application.properties dosya aşağıdaki gibi görünüyor:

spring.profiles.active=dev 
[email protected] 
token.expiration.length.minutes=120 

Elbette spring.profile.active özelliğini bir system özelliği olarak geçirerek dışa doğru genişletebilirim ama benim durumum için ve şimdilik iyi.

Uygulamayı çalıştırırken, "dev" profilini iletirseniz, Spring, DevelopmentConfig sınıfında tanımlanan tüm özellikleri ve Fasulye ile ApplicationConfig'teki tüm öğelerin yüklenmesini sağlar. "Prod" iletirseniz, bunun yerine ProductionConfig ve ApplicationConfig özellikleri yüklenir.

Güvenlik, E-posta, Veri JPA, Amazon Web Servisleri, Şerit ve daha fazlası ile bir Spring Boot web sitesi oluşturma hakkında bir kurs tamamlıyorum. Eğer isterseniz, here nolu ilginizi kaydedebilir ve kurs kayıt için açık olduğunda bilgilendirilirsiniz.

+0

///, – Shiv

+0

Hi Shiv'te çalışmaz, cevabımı, yukarıdakileri gösteren örnek bir projeyle ilişkilendirdim. Referansınız için örnek projeyi burada bulabilirsiniz. http://devopsfolks.com/stackoverflow-material/#36635163 –

+0

Teşekkürler. – Shiv