# 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 [](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