Print
Spring, Pico and Nuts Compared

In this page and sub-pages, we try to put together some feature-by-feature comparison between Spring, Pico/Nano and Yan/Nuts.

This comparison is focused on "IOC container" functionalities. So toolkits such as Spring DAO, Spring MVC are not taken into consideration. A good IOC container should be able to plug&play these services any way.

Throughout the comparisons, I tried to be objective. Yet, due to my limited knowledge on the compared containers, it is certainly possible that some facts and comparisons are inaccurate or simply incorrect. I'll be grateful for any correction.

We'll start with a big fat comparison table:

Features  Spring  Pico  Yan/Nuts
xml configuration

Yes  Through Nano Container

Yes
Auto wiring

Yes

Yes

Yes

Manual wiring

Yes

Yes

Yes

Extensible auto wiring support

No

No

Yes. Custom Autowire Mode - EJB3 style

Auto Bean Registration

No



Yes

Life cycle

Singleton only

Singleton only

Both singleton and prototype

Eager Instantiation

Default for all singletons

Yes

Yes

Lazy Instantiation

Yes

Yes

Default

Parametered and ad-hoc life cycle

No

No

Through <lifecycle> tag

Constructor Injection

Yes Yes

Yes

Setter Injection

Yes

Yes

Yes

Factory Method Injection

Yes

Yes

Yes

Referencing Field

FieldRetrievingFactoryBean

Implement ComponentAdapter

Through <field> tag.

Anonymous sub-bean

Yes No

Yes

Ad-hoc bean combination

No No

Through <sequence> or <callcc> tags

Concise collection literal

No

No

Yes

named local bean

No

No

Through <local> tag

abstract bean

Yes



No

bean function

no



yes

import module

Yes

Yes

Yes

module private beans

No

No

Through "export" and "hide" attribute of <module>

Selective import by bean names

No

No

Through "includes" and "excludes" attribute of <import>

Import with namespace

No

No

Through "namespace" attribute of <import>

Singleton bean with prototype property

Requires Cglib and bytecode generation

ComponentAdapter combination

Through component combination

Dependency Injection for objects not managed by container

Supported at the cost of Spring API dependency

No

Through <function> and <factory> tag

Extensible tag library

No. But FactoryBean is a substitute

No

By implementing subclasses of Nut

Configuration unit-testable within configuration file.

No

No

By using <sequence> together with <assertEqual>, <assertSame>, <if>, <unless>, <fail> etc.

autoproxy

Yes



No

Custom PropertyEditor

Yes

Yes

Yes

Container hierarchy

Yes

Yes

Yes

AOP support

Both Spring AOP and AspectJ

Via dynaop

Any AOP solution can be plugged in. An integration package for spring AOP is provided out-of-box.

Declarative Transactional support

Yes

  No. But Spring's declarative transaction support is integrated.

Scripting language support

Not yet

Nano Container

Not yet

Details:

 


Created by benyu

On Mon Nov 28 15:38:13 CST 2005

Using TimTam

Powered by Atlassian Confluence