# gadtry **Repository Path**: opsfast/gadtry ## Basic Information - **Project Name**: gadtry - **Description**: ​ Gadtry 是一个构建于java8之上的工具库, 涵盖Ioc Aop exec graph等等工具库. 包含了日常开发中非常多工具类,当然它还在不断丰富中. - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://github.com/harbby/gadtry - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2018-12-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gadtry [![Build Status](http://img.shields.io/travis/harbby/gadtry.svg?style=flat&branch=master)](https://travis-ci.org/harbby/gadtry) Gadtry A collection of java tool libraries. Contains: ioc. aop. exec. graph ... ## Use * maven ```xml com.github.harbby gadtry 1.2.0 ``` ## Ioc Create Factory: ``` IocFactory iocFactory = IocFactory.create(binder -> { binder.bind(Set.class).by(HashSet.class).withSingle(); binder.bind(HashSet.class).withSingle(); binder.bind(List.class).byCreator(ArrayList::new); //Single object binder.bind(Object.class, new Object()); binder.bind(Map.class).byCreator(HashMap::new).withSingle(); //Single object binder.bind(TestInject.class); }); Set a1 = iocFactory.getInstance(Set.class); Set a2 = iocFactory.getInstance(Set.class); Assert.assertEquals(true, a1 == a2); // Single object ``` Class Inject ``` public class TestInject { @Autowired private TestInject test; @Autowired public TestInject(HashMap set){ System.out.println(set); } } ``` ## Aop Does not rely on ioc containers: ``` T proxy = AopFactory.proxy(Class) .byInstance(instance) .returnType(void.class, Boolean.class) //.methodAnnotated(Setter.class) .around(proxyContext -> { String name = proxyContext.getInfo().getName(); System.out.println(name); Object value = proxyContext.proceed(); switch (name) { case "add": Assert.assertEquals(true, value); //Set or List break; case "size": Assert.assertTrue(value instanceof Integer); break; } }); ``` Dependent on ioc container: ``` IocFactory iocFactory = GadTry.create(binder -> { binder.bind(Map.class).byCreator(HashMap::new).withSingle(); binder.bind(HashSet.class).by(HashSet.class).withSingle(); }).aop(binder -> { binder.bind("point1") .withPackage("com.github.harbby") //.subclassOf(Map.class) //.classAnnotated(Service.class) .classes(HashMap.class, HashSet.class) .whereMethod(methodInfo -> methodInfo.getName().startsWith("add")) .build() .before((info) -> { Assert.assertEquals("add", info.getName()); System.out.println("before1"); }) .after(() -> { Assert.assertTrue(true); System.out.println("after2"); }); }).initialize(); Set set = iocFactory.getInstance(HashSet.class); ``` ## Exec New Jvm Throw the task to the child process ``` JVMLauncher launcher = JVMLaunchers.newJvm() .setCallable(() -> { // this is child process System.out.println("************ runing your task ***************"); return 1; }) .addUserjars(Collections.emptyList()) .setXms("16m") .setXmx("16m") .setConsole((msg) -> System.out.println(msg)) .build(); VmFuture out = launcher.startAndGet(); Assert.assertEquals(out.get().get().intValue(), 1); ``` ## Useful mailing lists 1. yezhixinghai@gmail.com - For discussions about code, design and features ## Other * 加入QQ群 438625067