Traducir frijol primaveral

Cuando se habla de Spring, definitivamente se mencionará el contenedor IOC y la inyección de dependencia DI. Spring logra el efecto de inversión de control inyectando un método que marca una clase como Bean en el contenedor IOC. Luego, cuando entramos en contacto con los beans por primera vez, tuvimos que usar archivos xml e inyectarlos uno por uno, como se muestra a continuación.

Si nuestro proyecto es generalmente grande y requiere el uso de cientos de beans, es muy engorroso de escribir. Luego Spring nos ayuda a implementar un método de inyección a través de anotaciones. Simplemente agregue la anotación correspondiente delante de la clase que debe inyectarse y Spring escaneará e implementará la inyección por nosotros.

Cómo escanear paquetes xml

En términos generales, existe la forma más sencilla y fácil de entender de inyectar beans. No digamos tonterías a continuación, publiquemos el código primero.

Además, la serie de preguntas y respuestas de la entrevista de primavera se ha ordenado y puede responder preguntas en línea buscando en el subprograma de la Biblioteca de entrevistas de Java en WeChat.

Beans

Clase de configuración

Clase de prueba

Ligeramente diferente de xml, en la prueba, la instanciación ya no es ClassPathXmlApplicationContext , pero la instancia AnnotationConfigApplicationContext obtenida.

MyBean en el código anterior es un Bean que necesitamos que Spring administre. Esta es solo una clase simple. En MyConfiguration, primero anotamos esta clase con @Configuration, lo que indica que esta clase es una clase de configuración de Spring y se cargará cuando se cargue la configuración.

En MyConfiguration, podemos ver que un método devuelve una instancia de MyBean. El método está marcado con la anotación @Bean, lo que indica que este es un método que inyecta un Bean. El Bean devuelto a continuación será Inject. COI.

Recomiende un "Tutorial básico de Spring Boot" y un ejemplo práctico: /javastacks/spring-boot-best-practice.

Cuando generamos una instancia de Bean, podemos usar el método constructor de Bean para inyectar la implementación de Bean. Mira directamente el código

Beans

Otra clase Bean

Clase de configuración

Aquí podemos encontrar que es igual que el El código inyectado de forma general es diferente. Veamos qué significa el nuevo comentario:

@conexión automática

Simple y burda, la traducción directa es el significado de montaje automático: llave inglesa:, todavía no entiendo por qué se llama Autoensamblaje:Llave:? Lo sabrás después de leer la explicación de la próxima apuesta. Si se especifica la identificación del Bean al inyectar aquí, se debe usar la anotación @Qualifier.

@Component (modo singleton predeterminado)

¿Qué se traduce esto en una parte? ¿Cómo es reparar un coche? Así es, la forma en que Spring administra los beans es la forma en que repara los autos. Cuando necesitamos convertir una clase en un Bean que Spring pueda inyectar, agregamos la parte de anotación @conmonet, de modo que al cargar el Bean en este automóvil IOC: llave inglesa:, se pueda ensamblar como piezas.

Aquí tenemos varias otras anotaciones que también pueden lograr esta función, a saber, @Component refinado:

@ComponentScan(" ")

O traducción, parte Escaneo , veamos la "biblioteca de piezas" entre paréntesis para ver qué "partes" (clases) deben cargarse. Spring escaneará el paquete e inyectará todas las clases marcadas con @Component.

La inyección es fácil de entender a través del constructor aquí.

Cuando ensamblamos la pieza MyBean, de repente descubrimos que debía instalarse en el COI sobre la base de AnotherBean, por lo que la ensamblamos automáticamente cada vez que ensamblamos MyBean: Llave inglesa: entró un AnotherBean. Por ejemplo, castaño:

Tomemos un coche como ejemplo. ¿Tengo que arrancar antes de pisar el acelerador? Para empezar, así es como es AutoWired. Si no arranca, es inútil, aunque pise el acelerador, no irá.

Podemos inyectar la implementación de Bean en el método set de la propiedad y echar un vistazo al código.

Clase MyBean

Clase de configuración y clase de prueba

Es la misma que la anterior, por lo que no la publicaré aquí.

Aquí encontramos un @AutoWired en el método setter. La diferencia con lo anterior es que no ensamblamos automáticamente este objeto cuando creamos una instancia de la clase: llave:, sino cuando llamamos explícitamente al definidor.

Nuestros dos métodos de inyección anteriores, como el código múltiple heterocrónico, son todos a través de atributos, es decir.

Aquí puedes ver que necesitamos usar AnotherBean como un objeto de instancia en esta clase, y podemos ensamblarlo automáticamente a través de @AutoWired.

Clase MyBeanList

Mi clase de configuración

Aquí inyectamos MyBeanList, y los elementos de la lista se inyectarán uno por uno.

Mi clase de configuración

Inyectar el mismo tipo que un genérico en la lista automáticamente coincidirá con ese tipo. Incluso si no hay sensación de Lista aquí, es solo un tipo de cadena, pero se inyectará a través del List Bean.

De manera similar, hay dos formas de inyectar beans tipo Map, y la segunda tiene mayor prioridad que la primera.

Las anteriores son varias formas de inyección de Bean a través de anotaciones, que se pueden comparar con la inyección xml.