我正在尝试使用 Guice 在我的代码中注入 org.springframework.ui.velocity.VelocityEngineFactoryBean 的实例。但不确定如何指定此Bean的Property velocityProperties 。
目前在春季,我可以使用。
<bean id="velocityEngine"
class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<props>
<prop key="resource.loader">class</prop>
<prop key="class.resource.loader.class">
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
</prop>
</props>
</property>
</bean>
Class VelocityEngineFactoryBean没有@Inject批注的此属性。
public class VelocityEngineFactoryBean extends VelocityEngineFactory
implements FactoryBean<VelocityEngine>, InitializingBean, ResourceLoaderAware {
private VelocityEngine velocityEngine;
它也没有为此提供制定者。
答案 0 :(得分:2)
这是我实施它的方式。
这很有用。
@Provides
VelocityEngine velocityEngine() throws Exception {
Properties props = new Properties();
props.put("resource.loader", "class");
props.put("class.resource.loader.class", ClasspathResourceLoader.class.getName());
return new VelocityEngine(props);
}
Guice会注入VelocityEngine。
如果我想使用 VelocityEngineFactoryBean ,使用reflection and Provides
创建VelocityEngineFactoryBean实例,还有另一种方法可以做到这一点。
然而,这看起来更像是一个黑客,所以我想我会直接创建一个Apache的引擎实例,而不是使用Spring。