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.