This commit is contained in:
Looly
2023-04-24 10:29:19 +08:00
parent e16c734756
commit 9e49100f03
22 changed files with 113 additions and 89 deletions

View File

@@ -0,0 +1,18 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
/**
* JDK方式切面实现基于{@link java.lang.reflect.Proxy}封装
*
* @author looly
*/
package org.dromara.hutool.extra.aop.engine.jdk;

View File

@@ -0,0 +1,19 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
/**
* 切面实现引擎
*
* @author looly
*
*/
package org.dromara.hutool.extra.aop.engine;

View File

@@ -0,0 +1,19 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
/**
* Spring-cglib切面实现
*
* @author looly
*
*/
package org.dromara.hutool.extra.aop.engine.spring;

View File

@@ -17,6 +17,7 @@ import java.nio.charset.Charset;
import java.util.Objects;
import org.dromara.hutool.core.util.CharsetUtil;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
/**
* 模板配置

View File

@@ -10,19 +10,17 @@
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.extra.template.engine;
package org.dromara.hutool.extra.template;
import org.dromara.hutool.core.lang.Singleton;
import org.dromara.hutool.core.reflect.ConstructorUtil;
import org.dromara.hutool.core.spi.SpiUtil;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.TemplateException;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import org.dromara.hutool.log.StaticLog;
/**
* 简单模板工厂用于根据用户引入的模板引擎jar自动创建对应的模板引擎对象
* 简单模板殷勤工厂用于根据用户引入的模板引擎jar自动创建对应的模板引擎对象
*
* @author looly
*/
@@ -34,8 +32,8 @@ public class TemplateFactory {
*
* @return 单例的TemplateEngine
*/
public static TemplateEngine get(){
return Singleton.get(TemplateEngine.class.getName(), TemplateFactory::of);
public static TemplateEngine getEngine() {
return Singleton.get(TemplateEngine.class.getName(), TemplateFactory::createEngine);
}
/**
@@ -45,8 +43,8 @@ public class TemplateFactory {
* @return {@link TemplateEngine}
* @since 5.3.3
*/
public static TemplateEngine of() {
return of(new TemplateConfig());
public static TemplateEngine createEngine() {
return createEngine(new TemplateConfig());
}
/**
@@ -56,7 +54,7 @@ public class TemplateFactory {
* @param config 模板配置包括编码模板文件path等信息
* @return {@link TemplateEngine}
*/
public static TemplateEngine of(final TemplateConfig config) {
public static TemplateEngine createEngine(final TemplateConfig config) {
final TemplateEngine engine = doCreate(config);
StaticLog.debug("Use [{}] Engine As Default.", StrUtil.removeSuffix(engine.getClass().getSimpleName(), "Engine"));
return engine;
@@ -72,15 +70,17 @@ public class TemplateFactory {
private static TemplateEngine doCreate(final TemplateConfig config) {
final Class<? extends TemplateEngine> customEngineClass = config.getCustomEngine();
final TemplateEngine engine;
if(null != customEngineClass){
if (null != customEngineClass) {
// 自定义模板引擎
engine = ConstructorUtil.newInstance(customEngineClass);
}else{
} else {
// SPI引擎查找
engine = SpiUtil.loadFirstAvailable(TemplateEngine.class);
}
if(null != engine){
if (null != engine) {
return engine.init(config);
}
throw new TemplateException("No template found !Please add one of template jar to your project !");
throw new TemplateException("No template found! Please add one of template jar to your project !");
}
}

View File

@@ -1,46 +0,0 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.extra.template;
import org.dromara.hutool.extra.template.engine.TemplateFactory;
/**
* 模板工具类
*
* @author looly
* @since 4.1.0
*/
public class TemplateUtil {
/**
* 根据用户引入的模板引擎jar自动创建对应的模板引擎对象使用默认配置<br>
* 推荐创建的引擎单例使用,此方法每次调用会返回新的引擎
*
* @return {@link TemplateEngine}
* @since 4.1.11
*/
public static TemplateEngine createEngine() {
return TemplateFactory.of();
}
/**
* 根据用户引入的模板引擎jar自动创建对应的模板引擎对象<br>
* 推荐创建的引擎单例使用,此方法每次调用会返回新的引擎
*
* @param config 模板配置包括编码、模板文件path等信息
* @return {@link TemplateEngine}
*/
public static TemplateEngine createEngine(final TemplateConfig config) {
return TemplateFactory.of(config);
}
}

View File

@@ -10,7 +10,10 @@
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.extra.template;
package org.dromara.hutool.extra.template.engine;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
/**
* 引擎接口通过实现此接口从而使用对应的模板引擎

View File

@@ -15,7 +15,7 @@ package org.dromara.hutool.extra.template.engine.beetl;
import org.dromara.hutool.core.io.IORuntimeException;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import org.beetl.core.Configuration;
import org.beetl.core.GroupTemplate;
import org.beetl.core.ResourceLoader;

View File

@@ -18,7 +18,7 @@ import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateConfig.ResourceMode;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import com.jfinal.template.source.FileSourceFactory;
import java.io.File;

View File

@@ -17,7 +17,7 @@ import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.io.IORuntimeException;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import org.dromara.hutool.extra.template.TemplateException;
import freemarker.cache.ClassTemplateLoader;
import freemarker.cache.FileTemplateLoader;

View File

@@ -14,7 +14,7 @@ package org.dromara.hutool.extra.template.engine.jetbrick;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import jetbrick.template.JetEngine;
import java.util.Properties;

View File

@@ -17,7 +17,7 @@ import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import io.pebbletemplates.pebble.PebbleEngine;
import io.pebbletemplates.pebble.loader.*;
import org.beetl.core.GroupTemplate;

View File

@@ -14,7 +14,7 @@ package org.dromara.hutool.extra.template.engine.rythm;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import java.util.Properties;

View File

@@ -23,7 +23,7 @@ import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
/**
* Thymeleaf模板引擎实现

View File

@@ -16,7 +16,7 @@ import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import org.apache.velocity.app.Velocity;
/**

View File

@@ -16,7 +16,7 @@ import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.map.Dict;
import org.dromara.hutool.extra.template.Template;
import org.dromara.hutool.extra.template.TemplateConfig;
import org.dromara.hutool.extra.template.TemplateEngine;
import org.dromara.hutool.extra.template.engine.TemplateEngine;
import org.dromara.hutool.extra.template.TemplateException;
import org.febit.wit.Engine;
import org.febit.wit.exceptions.ResourceNotFoundException;

View File

@@ -12,6 +12,10 @@
/**
* 第三方模板引擎封装,提供统一的接口用于适配第三方模板引擎
* <pre>
*
* TemplateFactory =》 TemplateEngine =》 Template =》 内容
* </pre>
*
* @author looly
*

View File

@@ -10,6 +10,8 @@
# See the Mulan PSL v2 for more details.
#
# 实现org.dromara.hutool.extra.template.engine.TemplateEngine
org.dromara.hutool.extra.template.engine.beetl.BeetlEngine
org.dromara.hutool.extra.template.engine.freemarker.FreemarkerEngine
org.dromara.hutool.extra.template.engine.velocity.VelocityEngine