acerca de spring Java

Iniciado por Beginner Web, 30 Junio 2021, 06:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

Una regunta cuando uso el @Autowired para un objecto este vive durante toda la aplicacion?

se puede usarlo como carro de compra?  :huh:
7w7

rub'n

#1
Claro, el IOC de spring lo maneja como singleton.

Lo mejor es que realices inyección por constructor y no vía variable de instancia.

Añadiendo que desde spring 4.3 ya no hace falta que uses esa anotacion porque ya son tratados como si tuvieran @Autowired, pruébalo tu misma, con un simple test e instancia 2 veces un mismo servicio y compara su hashCode

Por ejemplo, yo de verdad no se que estaras haciendo y como, pero aqui tienes un pequeño ejemplo, de que son tratados como singleton( una unica instancia durante toda la vida de la aplicación)

Código (java) [Seleccionar]

@Log4j2
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = SyncRandomNumbers.class)
class HashCodeTest {

   @Autowired
   private SyncRandomNumbers syncRandomNumbers;

   @Autowired
   private SyncRandomNumbers syncRandomNumbers2;

   @Test
   @DisplayName("Comparando el mismo hashcode, en este caso ambos seran iguales, son singletons" +
           "Aun sabiendo que ambos son anotados con @Service")
   void testMyHashcode() {
       
       log.info("Hashcode: {}", syncRandomNumbers.hashCode());
       log.info("Hashcode2: {}", syncRandomNumbers2.hashCode());
       assertThat(syncRandomNumbers.hashCode()).isEqualTo(syncRandomNumbers2.hashCode());
   }
}


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen