2015-10-29 22 views
5

Artık 3.özelliği yok, artık Grails 3, Spring'in özellik kaynağı konseptini kullanıyor, ancak aynı davranışı, 3'te olduğu gibi 3 numaralı çarklarda nasıl elde edebilirim önceki sürümler? Benim harici yapılandırma dosyası ile application.grovy dosyasındaki bazı özellik property.to.be.overridden geçersiz kılmak istediğimi varsayalım. Nasıl yapabilirim?Uygulamadaki mülkiyeti geçersiz kılmayı not edin. 3

cevap

2

grails.config.locations eşdeğer spring.config.location

İşte

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

komut satırından bir kavanoz başlatılırken yapılandırma belirleyerek bir örnektir olan (Bunlar aynı argümanlar senin ide içinde kullanılabilir)

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties 

Ayrıca özellikleri geçersiz kılmak istediğinizi belirtin o İlkbahar Boot profili özgü özellik dosyalarını işleme biçimini öğrenmek için yararlıdır

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-profile-specific-properties

+1

burada Graeme tarafından açıklandığı gibi: http: // grails.1312388.n4.nabble.com/Grails-3-External-config-td4658823.html Özellikleri kullanabilirsiniz. '-Dcom.foo =" sınama "' geçersiz kılınma ** com.foo ** from application.yaml. Ve isterseniz harici bir groovy dosyası ekleyebilirsiniz, gönderiye bakın. – olikaf

0

Bu biraz farklı bir yolu çözüldü (Çoklu profilleri de belirtilebilir), bu yüzden harici bir YAML dosyası yükleyebilir .

Application.groovy

package com.mycompany.myapp 

import grails.boot.GrailsApp 
import grails.boot.config.GrailsAutoConfiguration 
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean 
import org.springframework.context.EnvironmentAware 
import org.springframework.core.env.Environment 
import org.springframework.core.env.PropertiesPropertySource 
import org.springframework.core.io.FileSystemResource 
import org.springframework.core.io.Resource; 

class Application extends GrailsAutoConfiguration implements EnvironmentAware { 
    static void main(String[] args) { 
     GrailsApp.run(Application) 
    } 

    @Override 
    void setEnvironment(Environment environment) { 
     String configPath = System.properties["myapp.config.location"] 
     if (configPath) { 
      Resource resourceConfig = new FileSystemResource(configPath); 
      YamlPropertiesFactoryBean propertyFactoryBean = new YamlPropertiesFactoryBean(); 
      propertyFactoryBean.setResources(resourceConfig); 
      propertyFactoryBean.afterPropertiesSet(); 
      Properties properties = propertyFactoryBean.getObject(); 
      environment.propertySources.addFirst(new PropertiesPropertySource("myapp.config.location", properties)) 
     } 
    } 
} 

Sonra ben çalıştırdığınızda YAML dosyası belirtmek o

komut satırı

java -jar -Dmyapp.config.location=/etc/myapp/application.yml build/libs/myapp-0.1.war 
+0

Yukarıda bir bağlantı sağlıyorum (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property -files) ve bu ekstra adımları atmaya gerek kalmadan bir yaml dosyası belirtebileceğinizi de okur. Bu senin için işe yaramadı mı? Çalışması için sınıf yolunda SnakeYAML'a ihtiyacınız olduğunu söylüyor. – Zergleb

İlgili konular