Velocityインジェクター


import java.util.Map;
import org.apache.velocity.Template;
import com.google.inject.Inject;

public class SampleVelocity implements VelocityLogic{
   @Inject public Template _template;
   /* (非 Javadoc)
    * @see VelocityLogic#merge(java.util.Map)
    */
   public void merge(Map<String,Object> map){
      try{
      
      String sts = VelocityHelper.createString(this._template,map);
      
      }catch(Exception e){
      
      }
   }

}
===============
import org.apache.velocity.Template;
import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
/**
 * Velocityインジェクター
 */
public final class VelocityInjector{
   
   private VelocityInjector(){}
   
   public static VelocityLogic make(Class<? extends VelocityLogic> cls,String vmname){
      Injector injector = Guice.createInjector(new _Module(vmname));
      return injector.getInstance(cls);
   }
   static class _Module implements Module{
      private String vmname;
      public _Module(String vmname){
         this.vmname = vmname;
      }
      /* (非 Javadoc)
       * @see com.google.inject.Module#configure(com.google.inject.Binder)
       */
      public void configure(Binder binder){
         binder.bind(Template.class).toProvider(new VelocityProvider(this.vmname));
      }
   }
}
/***** Velocity 実行 *******/
String vmname = "sample.vm"; // テンプレート名
VelocityLogic vlogic = VelocityInjector.make(BeVelocity.class,vmname);

Map<String,Object> map = new HashMap<String,Object>();

vlogic.merge(map);