Prefácio
Javaconfig acabou sendo um subprojeto da primavera. Ele fornece informações de definição de feijão por meio de classes Java. Na versão Spring4, o Javaconfig se tornou oficialmente a função principal do Spring4.
Este artigo introduzirá em detalhes o conteúdo relevante sobre a configuração com base nas classes Java na primavera. Não vou dizer muito abaixo. Vamos dar uma olhada na introdução detalhada juntos.
1 Definição Bean
Pojo comum pode fornecer informações de definição de feijão para recipientes de mola, desde que a anotação @Configuration esteja marcada.
@ConfigurationPublic class SystemConfig { / ** * Defina o feijão e instancie * * @return * / @Bean public userdao userdao () {return userdao (); } @Bean Public Deptdao Deptdao () {return New Deptdao (); } / ** * Defina o Serviço de Usuários e injete o Userdao e Deptdao * * * @return * / @Bean UserService UserService () {Uservice Service = new UserService (); Service.setUserdao (Userdao ()); Service.setDeptdao (Deptdao ()); serviço de retorno; }}O método desta classe é anotado pela anotação @Bean, isto é, para definir o feijão. O tipo de feijão é determinado pelo tipo de valor de retorno do método. O nome padrão é o nome do método e o nome do método. Você também pode especificar o nome do feijão digitando o parâmetro, como @Bean (name = "xxx"). O corpo do método marcado por @Bean fornece a lógica para instanciar o feijão.
A configuração acima é equivalente ao seguinte XML:
<bean id = "userdao"/> <bean id = "deptdao"/> <bean id = "userService" p: userdao-ref = "userdao" p: deptdao-ref = "deptdao"/>
Comparado com o método de configuração com base nas classes Java, que é baseado no método de configuração XML ou baseado em anotação -
Como a própria classe de anotação @Configuration possui @Component, essas classes podem ser injetadas em outros feijões como feijões comuns.
@ConfigurationPublic Class ApplicationConfig {@AUTOWIRED SYSTEMING SYSTEMCONFIG SYSTEMCONFIG; @Bean Public AuthorityService AuthorityService () {AuthorityService Service = new AuthorityService (); Service.setUserdao (SystemConfig.Userdao ()); Service.setDeptDAO (SystemConfig.DeptDAO ()); serviço de retorno; }}A Spring usa aprimoramento da AOP para todos os métodos marcados @Bean na classe de configuração, introduzindo a lógica de gerenciamento do ciclo de vida do feijão. Por exemplo, SystemConfig.userdao () acima, ele retorna um singleton correspondente ao feijão.
Em @Bean, também podemos controlar o escopo do feijão anotando a anotação @Scope:
@Scope ("prototype")@beanpublic Deptdao Deptdao () {return New Deptdao ();}Dessa forma, cada chamada para o método deptdao () retornará uma nova instância:
assertnotsame (AuthorityService.getDeptDao (). HashCode (), AuthorityService.getDeptDao (). HashCode ());
NOTA: Use classes baseadas em Java para configuração, as bibliotecas Spring AOP e CGLIB devem ser incluídas no caminho de classe.
2 Inicie o recipiente de mola
2.1 Use apenas a classe @configuration
Você pode usar o construtor da classe AnotationConfigApplicationContext para passar na classe Java marcada @configuration para iniciar o contêiner de mola.
ApplicationContext Context = novo AnoTationConfigApplicationContext (SystemConfig.class); UserService UserService = (UserService) context.getBean ("UserService"); AssertNotNull (UserService);Se houver várias classes de configuração @Configuration, você poderá registrá -las nas AnoTationConfigApplicationContext e depois aplicar essas classes de configuração, refrescando o contêiner:
AnoTationConfigApplicationContext context = novo ANNOTATIONCONFIGAPplicationContext (); // Registre várias classes de configuração context.register (SystemConfig.class); context.register (ApplicationConfig.Class); // Atualizar o contêiner (Aplicar essas classes de configuração) contexto.Fresh (); config = context.getBean (ApplicationConfig.Class); AssertNotNull (config);
Você também pode montar várias classes de configuração em uma classe de configuração através do @import e, em seguida, apenas registrar a classe de configuração montada para iniciar o contêiner:
@Configuration @import (SystemConfig.Class) Classe public ApplicationConfig2 {@AUTOWIRED SYSTEMCONFIG SYSTEMCONFIGCIFIG; @Bean Public AuthorityService AuthorityService () {AuthorityService Service = new AuthorityService (); Service.setUserdao (SystemConfig.Userdao ()); Service.setDeptDAO (SystemConfig.DeptDAO ()); serviço de retorno; }}Testes de unidade:
AnoTationConfigApplicationContext Context = novo ANNOTATIONCONFIGAPplicationContext (ApplicationConfig2.Class); ApplicationConfig2 config = context.getBean (ApplicationConfig2.Class); AssertNotNull (config); autoridade final autoridade Autoridade = config.authorityService (); AssertNotNull (AuthorityService.getDeptDao ()); AssertNotSame (AuthorityService.getDeptDao (). HashCode (), AuthorityService .GetDepDao (). Hashcode ());
2.2 Usando arquivos XML para consultar a configuração da classe @Configuration
A classe de configuração marcada com @configuration também é um feijão, portanto também pode ser digitalizado pelo <Contexto: componente> da primavera. Portanto, se você deseja montar a classe de configuração no arquivo de configuração XML e iniciar a mola através do arquivo de configuração XML, você só precisar
<Contexto: Componente-Scan Base-Package = "net.deniro.spring4.conf" Recurso-tattern = "ApplicationConfig2.Class" />
2.3 Configuração dos arquivos XML de referência na classe @configuration
Na classe de configuração @Configuration, você pode introduzir diretamente os arquivos de configuração XML através do @IMPORTRESource, para que você possa consultar diretamente os feijões definidos no arquivo de configuração XML através do @AUTOWIRED.
Arquivo de configuração:
<bean id = "groupdao"/> <bean id = "roledao"/>
@Configuration Class:
@IMPORTRESOURCE ("ClassPath: Beans5-11.xml") @ConfigurationPublic Classe ServiceConfig {@Bean @Autowired Public Relationservice Relationservice (GroupDao GroupDao, Roledao roledao) {Relationservice Service = New RelatoraService (); Service.setGroupdao (Groupdao); Service.setRoledao (Roledao); serviço de retorno; }}Testes de unidade:
AnoTationConfigApplicationContext context = novo anoTationConfigApplicationContext (serviceConfig.class); serviceConfig config = context.getBean (serviceConfig.class); assertNoTNull (config); relationservice = config.RelantaSol (GroupDaDaRNOLO); contexto .getBean ("roledao"))); assertnotNull (Service.getRoledao ());Enquanto essas informações de definição de diferentes formas de feijão podem ser carregadas em recipientes de mola, a mola pode completar inteligentemente a montagem entre os feijões.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.