All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.extra.template.engine.TemplateFactory Maven / Gradle / Ivy

There is a newer version: 5.8.33
Show newest version
package cn.hutool.extra.template.engine;

import cn.hutool.core.lang.Singleton;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.ServiceLoaderUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateException;
import cn.hutool.log.StaticLog;

/**
 * 简单模板工厂,用于根据用户引入的模板引擎jar,自动创建对应的模板引擎对象
 *
 * @author looly
 */
public class TemplateFactory {

	/**
	 * 根据用户引入的模板引擎jar,自动创建对应的模板引擎对象
* 获得的是单例的TemplateEngine * * @return 单例的TemplateEngine */ public static TemplateEngine get(){ return Singleton.get(TemplateEngine.class.getName(), TemplateFactory::create); } /** * 根据用户引入的模板引擎jar,自动创建对应的模板引擎对象
* 推荐创建的引擎单例使用,此方法每次调用会返回新的引擎 * * @return {@link TemplateEngine} * @since 5.3.3 */ public static TemplateEngine create() { return create(new TemplateConfig()); } /** * 根据用户引入的模板引擎jar,自动创建对应的模板引擎对象
* 推荐创建的引擎单例使用,此方法每次调用会返回新的引擎 * * @param config 模板配置,包括编码、模板文件path等信息 * @return {@link TemplateEngine} */ public static TemplateEngine create(TemplateConfig config) { final TemplateEngine engine = doCreate(config); StaticLog.debug("Use [{}] Engine As Default.", StrUtil.removeSuffix(engine.getClass().getSimpleName(), "Engine")); return engine; } /** * 根据用户引入的模板引擎jar,自动创建对应的模板引擎对象
* 推荐创建的引擎单例使用,此方法每次调用会返回新的引擎 * * @param config 模板配置,包括编码、模板文件path等信息 * @return {@link TemplateEngine} */ private static TemplateEngine doCreate(TemplateConfig config) { final Class customEngineClass = config.getCustomEngine(); final TemplateEngine engine; if(null != customEngineClass){ engine = ReflectUtil.newInstance(customEngineClass); }else{ engine = ServiceLoaderUtil.loadFirstAvailable(TemplateEngine.class); } if(null != engine){ return engine.init(config); } throw new TemplateException("No template found ! Please add one of template jar to your project !"); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy