2017-02-08 4 views
1

Mit Springboot 1.4.4 könnte ich die VelocityEngine direkt als Bean verwenden. Die Konfiguration, die ich mit den application.properties tat:Velocity mit Springboot 1.5.x

spring.velocity.properties.resource.loader=jar 
spring.velocity.properties.jar.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 
spring.velocity.properties.jar.runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem 
spring.velocity.properties.jar.runtime.log.logsystem.log4j.category=velocity 
spring.velocity.cache=true 
spring.velocity.charset=UTF-8 

In Springboot 1.5.x gibt es keine Geschwindigkeits Unterstützung mehr. Wie kann diese Konfiguration in Springboot 1.5.x integriert werden?

Ich habe bereits die Abhängigkeit:

<dependency> 
    <groupId>org.apache.velocity</groupId> 
    <artifactId>velocity</artifactId> 
    <version>1.7</version> 
</dependency> 

und schaffte den Bean:

@Bean 
VelocityEngine velocityEngine(){ 
    return new VelocityEngine(); 
} 

Aber die Eigenschaften fehlen.

Mit

@Autowired 
ConfigurableEnvironment configurableEnvironment; 

Ich konnte die Eigenschaften analysieren, aber es fühlt sich falsch.

+2

Spring schlägt vor, dass Sie FreeMarker anstelle von Velocity verwenden. Sie können sehen, ob Sie Ihren Code ändern können, um FreeMarker anstelle von Velocity zu verwenden. FM-Vorlagen sind fast identisch mit Velocity-Vorlagen, daher sollte es nicht zu schwierig sein, sie zu ändern. – Jesper

Antwort

2

Ich werde Jespers Ratschlag befolgen, FreeMarker zu verwenden.

Um meine Frage zu beantworten, wenn jemand nicht Technologien wechseln kann aber will Springboot 1.5.x, hier als einfache Lösung bewegen: Eigenschaften geändert werden müssen, entfernen spring.velocity.properties:

resource.loader=jar 
jar.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 
jar.runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem 
jar.runtime.log.logsystem.log4j.category=velocity 
jar.resource.loader.cache=true 
input.encoding=UTF-8 

hinzufügen erstellt die Eigenschaften der Bean:

@Bean 
VelocityEngine velocityEngine(){ 
    Properties properties = new Properties(); 
    properties.load(this.getClass().getResourceAsStream("/application.properties")); 
    return new VelocityEngine(properties); 
} 

Ein wichtiger Nachteil ist, mit Bei dieser Lösung können Sie den Namen Ihrer Eigenschaftendatei nicht ändern, ohne sie auch für die Velocity-Engine zu ändern. So wird die Flexibilität von Springboot etwas reduziert.