├── .gitignore
├── pom.xml
└── src
├── main
└── java
│ └── kis
│ └── di
│ ├── Context.java
│ ├── LocalCache.java
│ ├── annotation
│ ├── InvokeLog.java
│ ├── Path.java
│ └── RequestScoped.java
│ ├── mvc
│ ├── RequestInfo.java
│ └── Server.java
│ └── sample
│ ├── Bar.java
│ ├── Foo.java
│ ├── Main.java
│ ├── Now.java
│ └── mvc
│ ├── IndexController.java
│ └── RequestInfoController.java
└── test
└── java
└── kis
└── di
└── mvc
└── ServerTest.java
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 |
3 | # Mobile Tools for Java (J2ME)
4 | .mtj.tmp/
5 |
6 | # Package Files #
7 | *.jar
8 | *.war
9 | *.ear
10 |
11 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
12 | hs_err_pid*
13 | /licenseheader.txt
14 | /nb-configuration.xml
15 | /nbproject/
16 | /target/
17 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4.0.0
4 | kis.di
5 | TinyDI
6 | 1.0-SNAPSHOT
7 | jar
8 |
9 |
10 | javax.inject
11 | javax.inject
12 | 1
13 |
14 |
15 | org.javassist
16 | javassist
17 | 3.20.0-GA
18 |
19 |
20 | junit
21 | junit
22 | 4.12
23 | test
24 |
25 |
26 | org.hamcrest
27 | hamcrest-core
28 | 1.3
29 | test
30 |
31 |
32 | org.projectlombok
33 | lombok
34 | 1.16.8
35 | provided
36 |
37 |
38 |
39 | UTF-8
40 | 1.8
41 | 1.8
42 |
43 |
44 |
45 |
46 | org.apache.maven.plugins
47 | maven-compiler-plugin
48 | 3.5.1
49 |
50 | 1.8
51 | 1.8
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/main/java/kis/di/Context.java:
--------------------------------------------------------------------------------
1 | package kis.di;
2 |
3 | import java.io.File;
4 | import java.io.IOException;
5 | import java.io.UncheckedIOException;
6 | import java.lang.reflect.Field;
7 | import java.net.URISyntaxException;
8 | import java.net.URL;
9 | import java.nio.file.Files;
10 | import java.nio.file.Path;
11 | import java.util.Collection;
12 | import java.util.HashMap;
13 | import java.util.Map;
14 | import java.util.Objects;
15 | import java.util.Set;
16 | import java.util.stream.Collectors;
17 | import java.util.stream.Stream;
18 |
19 | import javax.inject.Inject;
20 | import javax.inject.Named;
21 |
22 | import javassist.CannotCompileException;
23 | import javassist.ClassPool;
24 | import javassist.CtClass;
25 | import javassist.CtField;
26 | import javassist.CtMethod;
27 | import javassist.Modifier;
28 | import javassist.NotFoundException;
29 | import kis.di.annotation.InvokeLog;
30 | import kis.di.annotation.RequestScoped;
31 |
32 | /**
33 | * @author naoki
34 | */
35 | public class Context {
36 |
37 | static Map types = new HashMap<>();
38 | static Map beans = new HashMap<>();
39 | static ThreadLocal