Bread::Board

my $c = container MyApp => as {
    service dsn    => 'dbi:mysql:myapp_db';
    service logger => (class => 'Logger', lifecycle    => 'Singleton');
    service view   => (class => 'View',   dependencies => ['logger']);

    service model => (
        class        => 'Model',
        dependencies => ['logger', 'dsn'],
        block        => sub {
            my $m = Model->connect($_[0]->param('dsn'));
            $m->set_logger($_[0]->param('logger'));
            return $m;
        },
    );
    service app => (
        class        => 'MyApp',
        dependencies => ['model', 'view'],
    );
};
$c->resolve(service => 'app');