General info about DI.
For inspiration DI in Spring Framework.
We have a multi-module gradle project:
:webserver- a simple web server we found somewhere and slightly modified:di- a library module implementing Dependency Injection Framework.
- Implement :di module, to run Webserver
- Support Type, Interface and Superclass based injections
- Integer <- inject(Integer.class)
- Number <- inject(Integer.class)
- List <- inject(ArrayList.class)
- Think about cases:
- Where multiple candidates are available to inject.
- There is no right candidate to inject.
- Support Type, Interface and Superclass based injections
- Pass
WebServerEnd2EndTest - Write JUnit tests for both :di and :webserver modules
- Calculate JUnit test coverage
- Implement Logger with different message severities(you are free to use libraries) and configure it with DI.
This task has a high level of uncertainty. Make decisions based on your research and discretion. You are free to discuss architecture and implementation ideas with other students publicly.
We are going to rank solutions based on:
- completeness (DI is usable)
- correctness (DI and webserver are well tested with most corner cases covered)
- code quality (Code is well written end easy to understand)
Max score: 4 points.
- Use
shadowJartask to build:webserverfat jar - Use
:webserver:checkto run:webservertests - Use
:di:checkto run:ditests