Pico Container

# 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

## Team

A project like PicoContainer is always made possible by the effort of a lot of people. Read about the developers and the contributers' names below. All of them have worked together to make PicoContainer the most respected IoC framework.

## Committers

PicoContainer committers introduce themselves in their own words and are listed in alphabetical order.

### Paul Hammant

Paul is 39, has worked for ThoughtWorks since 2002 and is co-founder of the PicoContainer project. He used to freelance but is now very happy at TW. Paul practices XP on client sites and loves open source on which he is chief zealot for TW. He formerly worked at Apache on the Avalon project and remains there working on AltRMI. He loves the simplest thing as a design metaphor, hates too much XML. He loves the lowest common denominator (LCD) as a mechanism for facilitating divergent designs. To that end, he encourages multiple implementations of LCD ideas and APIs. Paul hopes to see Milli, Kilo and Mega implementations of the Pico idea. He hopes to see a myriad of interchangeable Pico Components. He hopes to see standard APIs for components emerge from those implementations, but never be forced when teams cannot agree. It would be fairly easy to guess that Paul does not like big up-front design. That not withstanding the fact that he used to do bucket-loads of it Paul with Aslak, wrote the first lines. Paired, under the influence of a couple of beers, and based on Joe's story of Rachel Davies' comments to his setter injector IoC work at the start of June 2003.

Paul is also well known for Enterprise Object Broker and Jesktop, the original driven side of Selenium and other stupid ideas like Thicky and related early Web 3.0 references

###

Konstantin Pribluda

I'm 32 and live in Wiesbaden. I started programming at the age of 12 and had access to really cool systems ranging from WANG 3200 through PDP 8/11 to System-360 ( actually sovjet clones of them, but who cares? ). My first "paid for" work was in 1988, and from that point I financed my study freelance software development. I developed fiscal management systems, medical video archiving, internet applications for telcos and java applet games ( later was for personal fun )...

After study I continued to freelance ( this time for better paying, but also fast failing ) companies and started to work on open source software ( xdoclet ). Now I'm permanently hired project leader, and I'am in position to use ( and develop ) whatever technologies I see fit - of course xdoclet, pico, nano and a lot of other stuff.

My biggest private interest ( besides open source programming ) is mountainbike racing.

###

Jörg Schaible

I was invited by Paul and Aslak early in 2004 to participate on the development of this project. I am currently 36 and write code for nearly 20 years in several languages and lately also Java. I have experience in AI software, did system programming and developed and maintained a plattform-independent GUI and database framework, and had to deal with CMS programming in JavaScript and J2EE. I was always involved in automated builds and tests for all these projects and one artifact left is JsUnit.

Pico got my interest after some first steps with IoC using the Avalon framework. I felt in love with Pico from the first moment, because of its simplicity and natural way of programming. Yet, there is a lot of space for further development on top of it and I am happy to be part of it.

My interests besides programming are my wife (who always gets too less time), reading books (a lot of fantasy and SF stuff), hearing celtic-rooted music (although I like others also lot), and - when in mood - cooking

Last, but not least, beeing a Christian is a part of my life, where I have my roots.

#### Mauro Talevi

I first came across Paul at an XTC (eXtreme Tuesdays Club) on Agile development at the Ol' Bank of England Pub in London. Back then PicoContainer had yet to be born. We were both working with Avalon IoC and in particular the Phoenix microkernel. Ever since discussing all the limitations of the Avalon framework - in particular the dependency on an API - I knew that the way forward was the Pico way.

I've worked in Java and enterprise systems for several years in various business domains - ranging from space data search portal for ESA to real-time messaging at the BBC - and I've come to appreciate the beauty, elegance and power of CDI.

### Michael Ward

I live in Chicago, or at least that is where all my bills are sent. As it seems to be the lingo, I was assimilated into ThoughtWorks back in 2003. I have been developing professionally since 1997 and have had the great opportunity to work and live in many great locations with some exceptionally talented individuals. I was immediately drawn to PicoContainer because of its simplicity. The API is small and does not force you to define all your configurations in XML. The projects I have worked on are easier to test, refactor, debug and extend because a natural side effect of utilizing CDI is a small and easy to comprehend code base. Mike leads the Waffle web framework project (the easiest for Java we think).

Have worked/contributed to various PicoContainer Java modules as well as the .NET port.

### Michael Rimov

Michael came to the Java world after programming for about eight years in the Windows API. He dove head first into Java J2EE frameworks by initially working with the popular heavyweight Expresso framework where he introduced unit testing to those developers. During his stint as Lead Developer, the framework's usage numbers exploded. After about nine years working with J2EE, Michael found the joys of light weight components and PicoContainer and has been reaping the performance benefits of both ever since. His goal is to see PicoContainer grow in the J2EE arena, in particular for web applications, while keeping Pico perfect for embedding in all applications.

Michael works for Centerline Computers, Inc in Corvallis Oregon.

## Emeritus Committers

Emeritus committers are those committers who have contributed significantly to the development of the project, but have been inactive for a period amount of time.

* Thomas Heller

#### Aslak Hellesøy

Aslak is very accomplished in the Open Source space and co-founder of PicoContainer. He leads XDoclet, and has taken over QDox from Joe. He wrote most of the impressive MiddleGen, and has refactored Generama out of both. From an observers point of view Aslak is prolific. Aslak was assimilated into ThoughtWorks in 2003. [ Words by Paul ]

* Mike Hogan

* Stephen L. Molitor

#### Dan North

Dan is a passionate Agile Coach and Developer. He's adept at a huge range of languages, with Ruby being his current favorite. This is his first foray into Open Source. Dan was assimilated into ThoughtWorks in 2002. [ Words by Paul ]

* Leo Simons

* Chris Stevenson

#### James Strachan

James used to dislike IoC, when the type that forced you to implement interfaces was the only choice. He championed the whole 'beans' effort at Apache, particularly in Jakarta-Commons. Most recently he's one of the the technical figurehead of LogicBlaze and a key in the Apache Geronimo project. Most exciting of all of James' activities has been as initial lead of the Groovy language (thank god James got off his XML horse - Ed). James refuses to join ThoughtWorks. [ Words by Paul ]

#### Jon Tirsén

Jon is a passionate fellow who's invidually accomplished in the Open Source space. Nanning is one of his babies, and he's a committer to Prevayler. With Aslak, DamageControl is is latest project. Jon was assimilated into ThoughtWorks in 2003. Latterly in Australia, he leads some of the ThoughtWorks Studios developments. [ Words by Paul ]

#### Joe Walnes

Joe Walnes is one of those high accomplished people, with a trail of "I must work with him" fans and quality Open Source projects behind him. He wrote SiteMesh, and large chunks of OpenSymphony. He started QDox, and XStream. One of the unsung heroes of Java/.Net development. Joe was assimilated into ThoughtWorks in 2002, then Google in 2006. [ Words by Paul ]

### Jose Peleteiro

I live in Rio de Janeiro, Brazil.

http://www.peleteiro.net

Jose Peleteiro works for Neoris do Brasil.

###

Contributers

A lot of people have contributed ideas and code to the PicoContainer's code base. See the names in the list below in alphabetical order.

* Nicolas Averseng
* Mathias Bogaert
* Rao Chejarla
* Jeppe Cramon
* Stacy Curl
* Laurent Etiemble
* Scott Farquhar
* Obie Fernandez
* Jay Fields
* Steve Freeman
* Mario Gutierrez
* Matt Ho
* Jacob Kjome
* Rafal Krzewski
* Aapo Laakkonen
* Graham Lea
* Philipp Meier
* Zohar Melamed
* Kouhei Mori
* Mirco Novakovic
* Rickard Öberg
* Kevin O'Neill
* Miguel A. Paraz
* Gilles Philippart
* Michael Rettig
* Adam Rosien
* Pedro Santos
* Jens Schumann
* Nick Sieger
* Paulo Silvera
* Vincent Tence
* Calvin Yu