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');