Logo image
Dependency Injection with Static Analysis and Context-Aware Policy
Journal article   Open access

Dependency Injection with Static Analysis and Context-Aware Policy

Michael D. Ekstrand and Michael Ludwig
Journal of object technology, v 15(1)
01 Jan 2016
url
https://doi.org/10.5381/jot.2016.15.1.a1View
Published, Version of Record (VoR) Open

Abstract

Computer Science Computer Science, Software Engineering Science & Technology Technology
The dependency injection design pattern improves the configurability, testability, and maintainability of object-oriented applications by decoupling components from both the concrete implementations of their dependencies and the strategy employed to select those implementations. In recent years, a number of libraries have emerged that provide automated support for constructing and connecting dependency-injected objects. Our experience developing systems with these tools has led us to identify two shortcomings of existing dependency injection solutions: the mechanisms for specifying component implementations often make it difficult to write and configure systems of arbitrarily-composable components, and the toolkit implementations often provide limited capabilities for inspection and static analysis of the object graphs of dependency-injected systems. We present GRAPHT, an new dependency injection container for Java that addresses these issues by providing context-aware policy, allowing component implementation decisions to depend on where in the object graph a component is required, and using a design that allows for static analysis of configured object graphs. To achieve its objectives, GRAPHT is built on a mathematical representation of dependency injection and object graphs that facilitates static analysis and straightforward implementation, and forms a basis for further consideration of the capabilities of dependency injection. The mathematical representation includes context-aware policy that we show to be strictly more expressive than the qualified dependencies used in many current toolkits. We demonstrate the utility of our approach with a case study showing how GRAPHT has aided in the development of the LENSKIT recommender systems toolkit.

Metrics

12 Record Views

Details

InCites Highlights

Data related to this publication, from InCites Benchmarking & Analytics tool:

Collaboration types
Domestic collaboration
Web of Science research areas
Computer Science, Software Engineering
Logo image