# code4craft/tiny-spring

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/code4craft-tiny-spring).**

4,089 stars · 1,800 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/code4craft/tiny-spring
- awesome-repositories: https://awesome-repositories.com/repository/code4craft-tiny-spring.md

## Description

tiny-spring is a Java inversion of control container and aspect-oriented programming framework. It provides a system for managing object lifecycles and dependency injection to decouple application components.

The project features a bytecode proxy generator that enables method interception and behavioral modification for classes that do not implement interfaces. It uses pointcut expressions to match specific classes and methods for the execution of cross-cutting logic via dynamic proxies.

The framework manages singleton components and resolves object dependencies using lazy initialization. Application environments and component wiring are defined and bootstrapped through external XML configuration files.

## Tags

### Software Engineering & Architecture

- [Dependency Injection Containers](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection-containers.md) — Provides a centralized inversion of control container to manage object lifecycles and resolve dependency graphs.
- [Inversion-of-Control Containers](https://awesome-repositories.com/f/software-engineering-architecture/inversion-of-control-containers.md) — Provides a central container to manage the lifecycle and instantiation of singleton components and their dependencies.
- [AOP Pointcut Matching](https://awesome-repositories.com/f/software-engineering-architecture/aop-pointcut-matching.md) — Evaluates specific patterns to determine which methods and classes should be targeted by interception logic.
- [Aspect-Oriented Programming Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/aspect-oriented-programming-frameworks.md) — Provides an AOP framework for modularizing cross-cutting concerns via dynamic proxies.
- [Automated Component Resolution](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection-providers/component-based-dependency-management/automated-component-resolution.md) — Injects components into one another by resolving references and using lazy initialization to prevent deadlocks. ([source](https://github.com/code4craft/tiny-spring/blob/master/changelog.md))
- [Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection.md) — Handles the creation and wiring of object dependencies to decouple components and simplify architecture.
- [Method Interception Proxies](https://awesome-repositories.com/f/software-engineering-architecture/method-interception-proxies.md) — Utilizes dynamic proxy systems to intercept method calls and inject custom behavioral rules. ([source](https://cdn.jsdelivr.net/gh/code4craft/tiny-spring@master/README.md))
- [Bytecode Proxy Generators](https://awesome-repositories.com/f/software-engineering-architecture/method-interception-proxies/bytecode-proxy-generators.md) — Implements a bytecode proxy generator allowing method interception for classes that lack interfaces.
- [Non-Invasive AOP Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/test-execution-wrapping/aop-execution-wrapping/non-invasive-aop-frameworks.md) — Provides a non-invasive AOP framework that intercepts method execution to apply cross-cutting logic without source code changes. ([source](https://github.com/code4craft/tiny-spring/blob/master/changelog.md))
- [Java AOP Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/test-execution-wrapping/aop-execution-wrapping/non-invasive-aop-frameworks/java-aop-frameworks.md) — Provides a full AOP framework for Java using pointcut expressions and dynamic proxies to execute cross-cutting logic.
- [XML Configurations](https://awesome-repositories.com/f/software-engineering-architecture/xml-configurations.md) — Parses XML files to automatically define and register components within the system container. ([source](https://github.com/code4craft/tiny-spring/blob/master/changelog.md))
- [Custom XML Bean Parsing](https://awesome-repositories.com/f/software-engineering-architecture/xml-configurations/custom-xml-bean-parsing.md) — Parses external XML files to define bean definitions and wiring instructions for the application context.
- [XML Context Bootstrapping](https://awesome-repositories.com/f/software-engineering-architecture/xml-configurations/xml-context-bootstrapping.md) — Reads component definitions and wiring instructions from XML files to initialize the application environment. ([source](https://cdn.jsdelivr.net/gh/code4craft/tiny-spring@master/README.md))
- [Reflection-Based Property Injection](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/signals-reactivity/dynamic-property-injection/reflection-based-property-injection.md) — Assigns values to object fields during initialization using reflection-based property injection. ([source](https://github.com/code4craft/tiny-spring/blob/master/changelog.md))
- [Application Component Lifecycles](https://awesome-repositories.com/f/software-engineering-architecture/component-lifecycle-management/application-component-lifecycles.md) — Manages the instantiation and lifecycle of backend application components using a factory to decouple creation logic. ([source](https://github.com/code4craft/tiny-spring/blob/master/changelog.md))
- [Singleton Component Management](https://awesome-repositories.com/f/software-engineering-architecture/creational-design-patterns/singleton-patterns/singleton-component-management.md) — Initializes single-instance components by automatically injecting all required attributes and dependencies. ([source](https://cdn.jsdelivr.net/gh/code4craft/tiny-spring@master/README.md))
- [Circular Dependency Resolution](https://awesome-repositories.com/f/software-engineering-architecture/dependency-resolution-engines/circular-dependency-resolution.md) — Defers component creation via lazy initialization to resolve circular dependencies and prevent deadlocks.
- [Singleton Instance Sharing](https://awesome-repositories.com/f/software-engineering-architecture/library-compatibility-managers/library-dependency-managers/shared-instance-mapping/singleton-instance-sharing.md) — Maintains a single instance of each component in a central registry to ensure shared state across the application.

### Programming Languages & Runtimes

- [Bytecode Generators](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/bytecode-generators.md) — Generates Java bytecode at runtime to create proxies for classes without interfaces.
- [Bytecode Proxy Generation](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/class-loading-mechanisms/class-loading-interception/class-method-interception/bytecode-proxy-generation.md) — Implements a bytecode proxy generator to enable method interception for classes that do not implement interfaces. ([source](https://github.com/code4craft/tiny-spring/blob/master/changelog.md))
- [Runtime Bytecode Proxying](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-redefinition/proxy-class-redefinitions/runtime-bytecode-proxying.md) — Generates new class definitions at runtime to allow method interception on classes that do not implement interfaces.

### Testing & Quality Assurance

- [Pointcut Expression Matching](https://awesome-repositories.com/f/testing-quality-assurance/method-interception/pointcut-expression-matching.md) — Uses pointcut expressions to match specific classes and methods for the execution of cross-cutting logic. ([source](https://github.com/code4craft/tiny-spring/blob/master/changelog.md))

### DevOps & Infrastructure

- [XML-Based Dependency Injection](https://awesome-repositories.com/f/devops-infrastructure/dependency-management/dependency-injection-systems/xml-based-dependency-injection.md) — Resolves object dependencies and injects properties based on configurations defined in external XML files.

### Part of an Awesome List

- [Spring Framework Analysis](https://awesome-repositories.com/f/awesome-lists/devtools/spring-framework-analysis.md) — Minimalist version of the framework for step-by-step architectural study.
