Antes de ler este artigo, você pode primeiro consultar o artigo " Compreensão simples dos exemplos de COOP e AOP e código da primavera " para aprender sobre o COI e a AOP na primavera. Vamos ao tópico. Este artigo apresenta como definir e carregar feijões Java na primavera.
Cenários de negócios
É também um exemplo de pessoas dirigindo. Primeiro, defina uma interface de carro e dois implementam Benz e BMW e, em seguida, defina uma classe de pessoa, que depende da interface do carro.
Carro de interface pública {void Go ();} classe pública Benz implementa o carro {public void go () {System.out.println ("benz go ..."); }} public class BMW implementa carros {public void go () {System.out.println ("bmw go ..."); }} public class Pessoa {string name = ""; Carro carro = nulo; Public Car Getcar () {Return Car; } public void setcar (carro) {this.car = car; } public pessoa (nome da string) {this.name = name; } public void drive () {System.out.println (nome+"está dirigindo ..."); carga(); }}Na classe de pessoa, podemos ver que o objeto do carro é um objeto dependente dessa classe e precisa ser injetado na classe de pessoa através de um método construtor. O código acima ainda não tem sombra da primavera. Vamos ver como a primavera a injeta.
Adicione dependências da mola
Atualmente, muitos projetos se aplicam ao Maven para gerenciar dependências e o mesmo se aplica a este projeto. Vou adicionar um nó de dependência ao pom.xml
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.2.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.2.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.6.RELEASE</version></dependency><dependency> <PuerpId> org.springframework </frugiD> <stifactId> Spring-Context-support </ArtifactId> <Versão> 3.2.6.release </sipers> </dependency>
Coloque esses nós de dependência no nó dependências do arquivo pom.xml, e o Eclipse baixará automaticamente os pacotes relevantes para o local padrão.
Definir e montar manualmente os feijões
Crie um novo arquivo XML chamado bean.xml no diretório raiz do projeto, com o seguinte conteúdo:
<? xml versão = "1.0" coding = "utf-8"?> <! value = "Tom" /> <Nome da propriedade = "Car" Ref = "Car" /> </ Bean> </ Beans>
O arquivo XML acima define primeiro um feijão com ID como carro e um feijão com ID como TOM. O carro é uma dependência de Tom e é montado manualmente no atributo do carro de Tom através de <nome da propriedade = "car" ref = "car" />.
O comportamento da criação de relações colaborativas entre os objetos de aplicação é chamado de fiação, que também é a essência da dependência da injeção de objetos.
Em seguida, instanciamos um objeto de contexto de aplicação no método principal e obtemos o nó Tom no feijão.
public class App {public static void main (string [] args) {ApplicationContext context = new ClassPathXMLApplicationContext ("bean.xml"); Pessoa tom = (pessoa) context.getBean ("Tom"); tom.Drive (); }}Execute o programa e o resultado da saída é:
Tom está dirigindo ... BMW GO ...
Montagem automática
Repita novamente: o comportamento da criação de uma relação colaborativa entre objetos de aplicativo é chamado de fiação, em vez do processo de instantar o objeto. No arquivo XML acima, montei o objeto de dependência por <propriedades name = "car" ref = "car" />, mas com o desenvolvimento contínuo do aplicativo, o arquivo de configuração XML definitivamente se tornará cada vez mais complexo. A maneira como associamos os grãos ao carro de identificação através da ref = "carro" começou a ficar para trás. Em seguida, apresentarei como a primavera implementa os feijões de montagem automática.
Tipos de montagem automática
A primavera tem quatro estratégias de montagem. Para reduzir a complexidade deste artigo, introduzirei duas estratégias comumente usadas, o método Byname e o método bytype. Como o nome indica, o método Byname é verificar se o nome do atributo e o ID do feijão são os mesmos. Neste exemplo, a classe de pessoa tem um atributo chamado Car. Se o atributo de classe ou alteração estiver definido como montagem automática e a política de montagem for byname, a primavera procurará um feijão com carro de identificação (deve ter o mesmo nome). O método bytype é comparar se os tipos são iguais. Neste exemplo, se o atributo do carro da classe ou classe de pessoa estiver definido como montagem automática e a política de montagem for bytype, uma vez que o atributo do carro é o tipo de carro, a primavera procurará feijão de carro do tipo ou sua subclasse quando a montagem automática.
Use XML para implementar a montagem automática
Em seguida, modificarei o código e usarei o método de configuração XML para obter uma montagem automática.
<? xml versão = "1.0" coding = "utf-8"?> <! <construtor-arg value = "Tom"/> </siean> </sheans>
A classe de pessoa não requer nenhuma modificação.
Primeiro, removi a linha de código Em seguida, adiciono um Property Autowire = "Byname" ao feijão com ID e defina -o para montar automaticamente a dependência pelo nome. Ao obter objeto de pessoa, todos os nomes de propriedades da pessoa têm significados especiais. Spring monitorou outro atributo chamado Car na classe Pessoa e encontrou um feijão com carro de identificação no arquivo de configuração, para que ele tenha montado automaticamente o atributo do carro da pessoa.
Montagem automática por anotação
Fazemos as seguintes modificações em bean.xml
<? xml versão = "1.0" coding = "utf-8"?> <! id = "Tom"> <construtor-arg value = "tom"/> </shean> </sheans>
Exclua um atributo Autowire = "Byname" de Beans com ID Tom e, em seguida, adicione um atributo padrão-autowire = "byname" aos beans do nó para definir o valor padrão do método de montagem automática de todos os grãos definidos no arquivo como ByName. Em seguida, faça algumas modificações na classe Pessoa e adicione a anotação @Autowired ao método Setter do carro para notificar a Spring para montar automaticamente a propriedade. Execute novamente o código e os resultados da saída permanecem inalterados.
@AutowIdedPublic void setcar (carro) {this.car = car;}Se você implementar a montagem automática por meio de anotações, precisará primeiro definir o método de montagem automática padrão na raiz dos grãos e, em seguida, não precisará configurar o atributo AutoCire para cada feijão que precisa de montagem automática no arquivo de configuração (se o método é inconsistente com o padrão, você ainda poderá configuê -lo separadamente para substituir o automóvel defensor do automático. O método de anotação é mais delicado e pode controlar o nível de atributo de feijões que precisam ser montados automaticamente.
Em todo o código acima, usamos a classe org.zdk.springproj1.bmw como uma dependência da classe Pessoa. Se a classe de pessoa não precisar dirigir um BMW devido às necessidades de negócios, é necessário alterar a configuração para org.zdk.springproj1.benz, sem modificar nenhum código Java. Este é o poder da primavera como um contêiner do COI.
Resumir
O exposto acima é toda a explicação detalhada da definição da primavera e dos grãos de montagem neste artigo. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a este site:
Java Spring Anotation Configuration Bean Code Code Analysis
Explicação detalhada do ciclo de vida do uso da configuração da primavera
Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!