Montagem automática de feijão

Prefácio


Hoje vamos resumir o problema da montagem do bean. Um software precisa estabelecer cooperação entre classes com funções diferentes para ser montado em um sistema poderoso. O Spring é um planejador nele. O resumo é: Eu sei que você precisa O quê, eu forneço a você o que você precisa, e você só precisa de um cérebro vazio, concentre-se na lógica de negócios que você deseja completar e deixe o resto comigo.

Você foi movido pelo Spring? Por exemplo, um computador contém muitos componentes. O Cup sabe que precisa de um disco rígido? Não sei, isso requer um trabalhador para montá-lo. O que você ganha é uma máquina com todos os acessórios na mão, e a mola é o montador

montagem


O ato de criar uma relação cooperativa entre os objetos do aplicativo é normalmente chamado de fiação, que também é a essência do DI (injeção de dependência)

Três métodos de configuração:

  1. Configuração de exibição em XML
  2. Configuração de exibição em JAVA
  3. Mecanismo de descoberta de bean implícito e montagem automática

Montagem de feijão automatizada

  • Varredura de componente: Spring irá descobrir automaticamente os beans criados no contexto do aplicativo
  • Auto-wiring: Spring atende automaticamente as dependências entre os beans
Exemplo: (retirado de "combate real da primavera")


Este pequeno exemplo é baseado em um reprodutor de CDs. Se o reprodutor de CDs não adicionar um registro, então ele é inútil, então a dependência aqui é que o reprodutor de CD depende do registro para tocar.

1. Crie um registro

public interface CompactDisc {
    void play();
}

Uma filosofia de codificação que vale a pena pensar: Definir um registro como uma interface Define as operações que um CD player pode realizar em um disco. Ele reduz ao mínimo o acoplamento entre a realização arbitrária do CD player e o próprio CD.

Em segundo lugar, a realização do 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);
    }

}

A diferença entre ps @Component, @Repository, @Service e @Controller

  • @Service é usado para anotar componentes da camada de negócios
  • @Controller é usado para anotar os componentes da camada de controle (como ação em struts)
  • @Repository é usado para anotar componentes de acesso a dados, ou seja, componentes DAO
  • @Component refere-se aos componentes em geral. Quando os componentes não são bem classificados, podemos usar esta anotação para anotação.

Eles são todos meta-anotações, usadas para anotar outras anotações, e sua função aqui: Anotada em uma determinada classe, a classe será automaticamente registrada como um BeanDefinition pelo contêiner Spring (ao escanear o pacote, se houver as quatro anotações acima, então Gerenciar esta classe no contêiner de primavera)

Três, configure a mola

A varredura de componentes não é iniciada por padrão. Você precisa exibir e configurar o Spring. Existem duas maneiras de configurar, uma é usar o código Java para definir as regras de montagem do Spring e a segunda é usar arquivos de configuração xml.

método um:

@Configuration
@ComponentScan
public class CDPlayerConfig {
    
    
}

Anotado com @Configuration, indicando que esta classe é uma classe de configuração, e @ComponentScan fará a varredura de pacotes com a mesma classe de configuração por padrão

método de teste:

//在测试开始的时候自动创建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 o scanner de pacote no arquivo 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 teste:

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

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);
    }

}
Resumindo


Hoje, aprendi brevemente algumas das aplicações mais básicas da montagem de molas. Este é apenas o exemplo mais simples. Quando o negócio é complexo, vários outros cenários aparecerão, e o poder da mola se manifestará lentamente.

Acho que você gosta

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