PicoContainer

# About

- What is PicoContainer?
- Introduction
- Javadoc
- Downloads
- News
- FAQ
- Project Goals
- Support

# Core Concepts

- Component Lifecycle
- Dependency Injection
- Scoped Containers

# Dependency Injection

- Constructor Injection
- Setter Injection
- Annotated Field Injection
- Annotated Method Injection
- Typed Field Injection
- Named Field Injection
- Method Injection
- Multiple Injection
- Composite Injection
- Factory Injection
- Reinjection
- Injection via Providers

# Configuration

- Disambiguation

# Modifying Component Behaviors

- Modifying Behaviors
- Caching and Singletons
- Hiding Implementations
- Thread Safety Behaviors
- AOP Style Interception

# Advanced Concepts

- Fluent Style
- Arrays, Collections and Maps
- Leveraging Parameter Names
- Building Containers
- Component Properties
- Component Configuration
- Monitoring Component Events

# PicoContainer's Architecture

- Design Patterns
- Inversion of Control
- Component Adapters
- Mock Objects
- Terminology
- Container Comparisons
- Transparency

# Container Choices

- DefaultPicoContainer
- CommandLinePicoContainer
- PropertiesPicoContainer
- SystemPropertiesPicoContainer
- TransientPicoContainer
- TieringPicoContainer

# Dependant & Related

- Web Frameworks
- Scripting Support
- Persistence
- Logging

# Anti-patterns

- Propagating Dependency
- Long Constructor Argument List
- Container Dependency
- Unit Tests Use Container
- Singleton

# Help Pages

- Ambiguous Injectable
- Unprocessed Properties

# History

- Inversion of Control History

# Project Info

- Project
- Team

# Hosted by

# Tools

## Project Goals

PicoContainer's core was designed with some goals in mind:

- No mandatory dependencies.
- No mandatory implements/extends/import for component makers.
- No logging built in (we have a Monitor interface and implementations for Commons-Logging and Log4J etc).
- No meta-data or scripting requirement.
- Small jar size.
- Embeddable by design (no main method entry point).

If someone has a need for PicoContainer that we did not originally envision, or a feature not yet imlemented, we will try to accomodate it.

The principle of Lowest Common Denominator (LCD) allows us, for PicoContainer itself, to keep things small, while allowing extensions to deliver the larger visions. Thus, logging, scripting, web-technologies, persistence, are dealt with by extensions of PicoContainer.

Meanwhile, we want teams to be able to use PicoContainer in their project in an inobstrsuve way. We're happy for teams to embed it in such a way that its invisible.