public class TransactionalSupport implements TransactionSynchronization {
private Supplier supplier;
public TransactionalSupport(Supplier supplier) {
this.supplier = supplier;
}
@Override
public void afterCommit() {
supplier.get();
}
}
//业务逻辑事务提交之后再执行日志操作 TransactionalSupport transactionalSupport = new TransactionalSupport(()-> { try { contextBean.doCommonLogAfterBusiness(finalMap); } catch (Exception e) { logger.error("日志保存失败,异常信息:{},入参:{},结果:{}", e.getMessage(), param, result); e.printStackTrace(); } return null; }); TransactionSynchronizationManager.registerSynchronization(transactionalSupport);
//mybatis 代码自动生成
https://www.cnblogs.com/lanomw/p/12426985.html
//java编译动态生成class文件
public class CompilerUtil { public static Class generateClass(String javaFilename, String packageName, String javaCode) throws Exception { JavaStringCompiler compiler = new JavaStringCompiler(); String prefix = String.format("package %s;", packageName); Map<String, byte[]> map = compiler.compile(javaFilename + ".java", prefix + "\n" + javaCode); return compiler.loadClass(packageName + "." + javaFilename, map); } public static void main(String[] args) throws Exception { String teacherCode = "public class Teacher extends Person {\n" + "\n" + " @Override\n" + " public void sayHello() {\n" + " System.out.println(\"My name is \" + getName() + \", I am a teacher\");\n" + " }\n" + "}\n"; Class teacherClass = generateClass("Teacher", "com.example.demo.classg", teacherCode); Person person = (Person) teacherClass.newInstance(); person.setName("Tom"); person.sayHello(); } }
实战:一键生成前后端代码,Mybatis-Plus代码生成器让我舒服了_公众号:方志朋的博客-CSDN博客GitHub - pengziliu/GitHub-code-practice: GitHub代码实战系列