Montaje automático de Bean

Prefacio


Hoy resumiremos el problema del ensamblaje de beans. Un software necesita establecer una cooperación entre clases con diferentes funciones para ser ensamblado en un sistema poderoso. Spring es un programador en él. El resumen es: Sé que necesitas Qué, te proporciono lo que necesitas, y solo necesitas que tu cerebro esté vacío, céntrate en la lógica empresarial que quieres completar y déjame el resto a mí.

¿Te ha movido Spring? Por ejemplo, una computadora contiene muchos componentes. ¿Sabe la Copa que necesita un disco duro? No sé, esto requiere que un trabajador lo ensamble. Lo que obtienes es una máquina con todos los accesorios, y el resorte es el ensamblador.

montaje


El acto de crear una relación cooperativa entre los objetos de la aplicación generalmente se denomina cableado, que también es la esencia de DI (inyección de dependencia)

Tres métodos de configuración:

  1. Mostrar configuración en XML
  2. Configuración de pantalla en JAVA
  3. Mecanismo implícito de descubrimiento de beans y ensamblaje automático

Ensamblaje automatizado de frijoles

  • Escaneo de componentes: Spring descubrirá automáticamente los beans creados en el contexto de la aplicación
  • Cableado automático: Spring cumple automáticamente las dependencias entre los beans
Ejemplo: (tomado de "combate real de primavera")


Este pequeño ejemplo se basa en un reproductor de CD, si el reproductor de CD no agrega un registro, entonces es inútil, por lo que la dependencia aquí es que el reproductor de CD depende del registro a reproducir.

1. Crea un registro

public interface CompactDisc {
    void play();
}

Una filosofía de codificación en la que vale la pena pensar: Definir un disco como interfaz. Define las operaciones que un reproductor de CD puede realizar sobre un disco. Reduce al mínimo el acoplamiento entre la realización arbitraria del reproductor de CD y el propio CD.

En segundo lugar, la realización del registro.

@Component
public class SgtPeppers implements CompactDisc {
    
    

    //beatles1967年发行的专辑
    private String title="Sgt.Perpper's Lonely Hearts Club Band";
    private String artist="The Beatles";

    public void play() {
        System.out.println("Playing "+title+" by "+artist);
    }

}

La diferencia entre ps @Component, @Repository, @Service y @Controller

  • @Service se utiliza para anotar componentes de la capa empresarial
  • @Controller se usa para anotar componentes de la capa de control (como la acción en los puntales)
  • @Repository se utiliza para anotar componentes de acceso a datos, a saber, componentes DAO
  • @Component se refiere a componentes en general. Cuando los componentes no están bien clasificados, podemos usar esta anotación para anotación.

Todas son meta-anotaciones, que se utilizan para anotar otras anotaciones, y su función aquí: anotadas en una determinada clase, la clase se registrará automáticamente como BeanDefinition por el contenedor Spring (al escanear el paquete, si hay las cuatro anotaciones anteriores, entonces Administre esta clase en el contenedor de primavera)

Tres, configura la primavera

El escaneo de componentes no se inicia de forma predeterminada. Necesita mostrar y configurar Spring. Hay dos formas de configurar. Una es usar código Java para definir las reglas de ensamblaje de Spring y la segunda es usar archivos de configuración xml.

método uno:

@Configuration
@ComponentScan
public class CDPlayerConfig {
    
    
}

Anotado con @Configuration, lo que indica que esta clase es una clase de configuración, y @ComponentScan escaneará paquetes con la misma clase de configuración de forma predeterminada

método de prueba:

//在测试开始的时候自动创建Spring的应用上下文
@RunWith(SpringJUnit4ClassRunner.class)
//会告诉他需要在CDPlayerConfig中加载配置。因为CDPlayerConfig包含了@ComponentScan,最终的应用上下文中应该包含CompactDisc bean
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {
    
    
    @Autowired
    private CompactDisc cd;

    @Test
    public void cdShouldNotBeNull(){
        assertNotNull(cd);
    }

}

Método 2:
configurar el escáner de paquetes en el archivo xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.2.xsd">
    <!-- 配置包扫描器 -->
    <context:component-scan base-package="soundsystem"/>
</beans>

método de prueba:

第二种测试方法:(配置文件)

public class CDPlayerTest {
    
    
    @Autowired
    private CompactDisc cd;

    @Test
    public void cdShouldNotBeNull(){
        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
        context.start();
        cd=(CompactDisc) context.getBean("lonelyHeartsClub");
        assertNotNull(cd);
    }

}
para resumir


Hoy, aprendí brevemente algunas de las aplicaciones más básicas del ensamblaje de resortes. Este es solo el ejemplo más simple. Cuando el negocio es complejo, aparecerán varios otros escenarios y el poder del resorte se reflejará lentamente.

Supongo que te gusta

Origin blog.csdn.net/cd18333612683/article/details/79021642
Recomendado
Clasificación