public < T > T getBean ( final String name ) { // Lookup for registered bean definition. BeanDefinition def = lookupBeanDefinition ( name ) ; if ( def == null ) { // try provider ProviderDefinition providerDefinition = providers . get ( name ) ; if ( providerDefinition != null ) { return ( T ) invokeProvider ( providerDefinition ) ; } return null ; } // Find the bean in its scope Object bean = def . scopeLookup ( ) ; if ( bean == null ) { // Create new bean in the scope initBeanDefinition ( def ) ; final BeanData beanData = new BeanData ( this , def ) ; registerBeanAndWireAndInjectParamsAndInvokeInitMethods ( beanData ) ; bean = beanData . bean ( ) ; } return ( T ) bean ; }
Returns Petite bean instance . Petite container will find the bean in corresponding scope and all its dependencies either by constructor or property injection . When using constructor injection cyclic dependencies can not be prevented but at least they are detected .