No recipiente da primavera, além de estabelecer dependências através do <ref>, existem algumas relações especiais entre os dois grãos.
1 herança
No princípio de programação orientado a objetos, quando várias classes têm os mesmos métodos e propriedades, a classe pai pode ser introduzida para eliminar o código duplicado. No contêiner da primavera, se vários feijões tiverem as mesmas informações de configuração, podemos definir um feijão pai, para que o Bean Child herque automaticamente as informações de configuração do feijão pai.
<!-pai feijão-> <bean id = "abstractBook" p: name = "véil" abstract = "true"> </i bean> <!-infantil bean-> <bean id = "book1" p: press = "chongqing house" parent = "abstrateBook"/> <bean id = "book" "p: imprensfing/" shanghai tradução "
De um modo geral, a função do feijão pai é simplificar a configuração do feijão infantil, por isso é definido como uma classe abstrata (abstrato = "true"); Se o feijão pai não estiver definido como uma classe abstrata aqui, o contêiner de mola instanciará o feijão pai.
2 pré-dependência
De um modo geral, é usado para estabelecer dependências entre feijões. Os contêineres de primavera são responsáveis por gerenciar esses relacionamentos. Ao instantar um feijão, o contêiner garante que todos os feijões dependem do feijão concluir o trabalho de inicialização.
Mas, em alguns casos, as dependências entre feijões não são tão óbvias.
Suponha que, nesse cenário, um sistema defina alguns parâmetros do sistema (como o período de validade de senha, seja para ativar o monitoramento etc.), e esses parâmetros de inicialização são usados para controlar a lógica operacional do sistema. Usamos uma classe de configuração para representar esses parâmetros:
Classe pública Configurações { / ** * Tempo de expiração da senha (unidade: dias) * / public static int pass_timeout = 30; / *** Se deve habilitar o monitoramento*/ public estático booleano is_monitor = false;}Aqui definimos valores padrão para esses parâmetros. O sistema também possui um back -end administrativo, através do qual os administradores podem ajustar esses parâmetros do sistema e salvá -los no banco de dados. Portanto, quando o aplicativo é iniciado, esses parâmetros do sistema precisam ser carregados no banco de dados:
classe pública System {public System () {init (); } /*** Inicialização* /private void init () {// Suponha que esses valores venham do banco de dados Settings.pass_timeout = 20; Settings.is_monitor = true; }}O sistema possui um gerenciador de expiração de senha, que criará uma tarefa cronometrada para detectar se a senha expira com base no [número de dias em que a senha expira] nos parâmetros do sistema:
classe pública PassManager {int timeout; public passManager () {timeout = Settings.pass_timeout; timerTask (); } / *** Tarefa cronometrada para detectar se a senha expira* / private void timerTask () {} public int getTimeout () {return timeout; }}Embora o PassManager não confie diretamente nas configurações, logicamente, o PassManager espera que o sistema carregue os parâmetros inicializados do sistema antes de iniciar.
Na primavera, você pode especificar explicitamente o feijão de pré-dependência de um feijão através da propriedade depende para garantir que o feijão de pré-dependência desse feijão tenha sido carregado antes da instanciação.
<bean id = "System"/> <bean id = "gerente" depende
Se o prefixo depende de vários feijões, o nome do feijão poderá ser configurado por vírgulas, espaços ou semicolons.
3 ID da cotação
Suponha que um feijão precise se referir ao valor de identificação (nome do feijão) de outro feijão. Isso geralmente é usado para obter outro feijão através do método getBean (Beanname) no feijão durante o tempo de execução.
Pode ser configurado assim:
<bean id = "autor"/> <bean id = "book" p: autorid = "autor"/>
Atributo Autorid adicionado no livro:
/** * Autor Bean ID */String privada AutorID;
Embora possa ser definido nesta forma literal, não há uma relação de referência real entre os dois. Portanto, o erro de configuração será encontrado apenas quando a chamada específica for chamada.
Spring fornece a tag <dref> elemento, que faz referência ao nome de outro feijão através do <dref>. Dessa forma, quando o contêiner iniciar, a correção do relacionamento de referência será verificada e as informações de configuração incorretas podem ser encontradas com antecedência.
<bean id = "autor10"/> <bean id = "book10"> <propriedade name = "autorid"> <iDref bean = "Author10"/> </Property> </i bean>
Se ocorrer um erro de configuração, um BeandEfinitionStoreException será lançado quando o contêiner de mola iniciar e o analisador XML do IDE também encontrará erros de referência com antecedência, por isso é recomendável usar a tag <dref> para fazer referência ao ID.
Resumir
O exposto acima é o relacionamento especial entre os feijões de primavera apresentados pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem. O editor responderá a você a tempo!