style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Es posible usar un @Resource definido en la misma clase @Configuration

Tengo algo como esto:

La clase `Other` necesita una instancia de `MyBean` así que cree el atributo y lo uso cuando creo el bean `Other`

 
    @Configuration
    public SomeClass {
   
         @Resource
         private MyBean b;
   
         @Autowired
         Environment env;
   
         @Bean
         public MyBean myBean() {
             MyBean b = new MyBean();
             b.foo(env.getProperty("mb"); // NPE
             return b;
         }
   
         @Bean
         public Other other() {
             Other o = new Other(o);
             return o;
         }
    }

Pero me arroja `NullPointerException` al inicializar el objeto `myBean`, supongo que es porque la propiedad `env` aún no ha sido inyectada en ese punto.

Si no uso el bean sino llamo al método directamente todo funciona bien.

    @Configuration
    public SomeClass {
   
         @Autowired
         Environment env;
   
         @Bean
         public MyBean myBean() {
             MyBean b = new MyBean();
             b.foo(env.getProperty("mb"); // NPE
             return b;
         }
   
         @Bean
         public Other other() {
             Other o = new Other(myBean());
             return o;
         }
    }

Es porque estoy definiendo el @Bean en la misma clase @Configuration?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Respuesta: Usando @Autowired

Respuesta:

Usando @Autowired en vez de @Resource soluciona el problema, aunque agrega un atributo que la clase no necesita. Lo mejor es agregar el objeto necesitado como parametro al método

...
    @Bean
    public void Ohter other( Mybean b ) {
         return new Other(b);
    }
...

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">