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:
- Configuração de exibição em XML
- Configuração de exibição em JAVA
- 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.