简体   繁体   中英

Velocity with Springboot 1.5.x

With Springboot 1.4.4 I could use the VelocityEngine as bean directly. The configuration I did with the application.properties:

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 there is no Velocity Support anymore. What is the best way do integrate this configuration in Springboot 1.5.x?

I already added the dependency:

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

And created the Bean:

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

But the Properties are missing.

With

@Autowired
ConfigurableEnvironment configurableEnvironment;

I could parse the Properties, but it feels wrong.

I will follow Jespers advice to use FreeMarker.

In order to answer my question, if someone cannot switch technologies but wants to move to Springboot 1.5.x, here as an easy solution: Properties need to be changed, remove 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

Add the properties created the Bean:

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

One important drawback is, with that solution you cannot change your property file name without changing it for the Velocity engine as well. So it removes some of the flexibility of Springboot.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM