Faça uma pergunta
A instanciação de feijões na primavera é uma parte importante do ciclo de vida do feijão. Geralmente, o feijão não muda após a inicialização.
Então, qual é o processo de Spring Instância Bean? !
Análise do processo de instanciação da primavera
Para obter um objeto de feijão, você deve primeiro obtê -lo através do método getBean () de Beanfactory. Durante esse período, uma série de etapas será passada para instanciar o objeto Bean:
Etapa 1: ligue para o construtor padrão do feijão (é claro, também pode ser outros construtores especificados) para gerar uma instância do feijão: Bean1.
Etapa 2: Verifique se o valor do atributo do feijão é injetado no arquivo de configuração do feijão. Se houver injeção, injete seus atributos com base na instância do Bean1, substitua o Bean1 original para formar uma nova instância do feijão: Bean2.
Etapa 3: verifique se o feijão implementa a interface InitializingBean. Se essa interface for implementada, ligue para o método AfterPropertiEsset () para executar operações correspondentes no Bean2 e substitua o Bean2 para formar uma nova instância do Bean: Bean3.
Etapa 4: verifique se a propriedade Init-Method é especificada no arquivo de configuração do feijão. Se for especificado, ligue para o método correspondente desta propriedade e execute operações correspondentes no Bean3 e, finalmente, substitua o Bean3 para formar uma nova instância: bean4.
Através das etapas acima, descobrimos que, quando a primavera instâncias de primavera um feijão, o feijão está constantemente mudando!
Demonstração do Código do Processo de Instanciação da Primavera
Para ilustrar melhor as etapas acima, consulte o seguinte código:
Classe de entidade:
/***Classe de entidade*/classe pública Empregado implementa InicializandoBean, DisposableBean, Beannameaware {private String ID; // Número do funcionário Nome de String Private; // Nome do funcionário Sexo privado String; // Funcionário de gênero Private String Age; // Empregado String Private Nativarplace; // Empregado Place String Departamento; // Departamento de Empregado Sistema Privado BeanName; // Fore String; 1: chame o construtor padrão do feijão ************* "); this.id = "bean1: g080405214"; system.out.println ("valor de bean1:" + this); system.out.println ("*********** Etapa 2: verifique se o valor da propriedade do feijão é injetado no arquivo de figuration de benéias ************* {System.out.println ("Valor de Bean2:" + this); system.out.println ("************ Etapa 3: verifique se o feijão implementa a interface inicializando *************** "Bean3: 25"; System.out.println ("Valor de Bean3:" + this);} public void init () {System.out.println ("************** Etapa 4: verifique se o init-method está especificado no arquivo de configuração do feijão ***********************"); "bean3: beijing"; system.out.println ("valor do bean4:" + this);} public void Destroy () lança Exceção {System.out.println ("***************** Set *********** bean **************** "); this.BeanName =" myBeanName ";} public String getId () {return id;} public void setId (string id) {this.id = id;} public string getName () {Nome de retorno;} public void setName (string) {this.Name =; setSex (string sex) {this.sex = sexo;} public string getage () {return idade;} public void setage (string idade) {this.age = Age;} public string getNative () {return native;} public string sTingnative (string native) {this.native) department) {this.department = department;}public String getBeanName() {return beanName;}@Override public String toString() {return "Employee [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + ", nativePlace=" + nativePlace + ", department=" + department + ", beanName=" + beanName + "]";}}Ferramentas:
/*** Classe de ferramenta de contexto de bean*/classe pública beanContexThelper {private estático ApplicationContext _instance; static {if (_instance == null) _instance = BuildApplicationContext ();} private BeanContexThelper () {}/*** Rebuild {return new ClassPathXMLApplicationContext ("ApplicationContext-base.xml");}/*** Obtenha um objeto ApplicationContext*/public static ApplicationContext getApplicationContext () {return _instance;}}Configuração do feijão da primavera:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bans-2.xsd http://wwwem http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-================ Teste o processo de instantar um feijão no beanfactory da primavera-> <bean id = "funcionário" init-method = "init" Destro-Method = "Destroy"> <!-O departamento de padrão é o departamento de R&D-> <Nome = "departamento"> </Value>
Classe de teste:
/*** FeanFactory Instantiation Engineering Test Class*/public class Test {public static void main (string args []) {test test = new test (); test.test ();} public void test () {ApplicationContext context = beanContexthelper.getApplicationContext (); funcionário; funcionário (funcionário) (funcionário) (funcionário) (funcionário) (funcionário) (funcionário); context.getbean ("funcionário"); system.out.println ("************ da primavera a instância final do feijão obtida por beanfactory ************"); System.out.println ("O valor do feijão final:" + funcionário);}}Resultados em execução:
************ Etapa 1: Ligue para o construtor padrão do feijão ****************** o valor de Bean1: funcionário [id = bean1: g080405214, nome = nulo, sexo = nulo ,****************l = nulo, nulo O feijão ***************** bean3: Employee [id=bean1:G080405214, name=bean3:Li Xiaohong, sex=bean3:female, age=bean3:25, nativePlace=null, department=bean2: R&D department, beanName=myBeanName] ********* Step 4: Check whether init-method is specified in the bean configuration file. Este atributo **************** O valor de Bean4: funcionário [id = bean1: g080405214, nome = bean3: li xiaohong, sexo = bean3: fêmea, idade = beliken*elh, 25, nativo = bEan3: beijing, departamento = bean2: r & duble, beanname, benname = bEanname = bean3: beijing, departamento = bean2: r & idiota, beanname, bennames = benname = bean3: bean3: beijing, departamento = bean2: r & idiota* BeanFactory ************* o valor final do feijão: funcionário [id = bean1: g080405214, nome = bean3: li xiaohong, sexo = bean3: fêmea, idade = bean3: 25, nativo = bean3: beijing, departamento = bean2: r & d departamento, beanname = bEANName = mybean3: mybean3: beijing, bean2: r & d departamento, beanname = bEANName = mybean3: mybean3: beijing, bean2: r & d departamento, beanname = bEANName = myBean3
A julgar pelos resultados da operação, devemos ser muito claros sobre o processo específico de instanciação do feijão.
Empregados implementos 3 interfaces:
InitializingBean: Esta interface fornece o método AfterPropertiEsset (), que é usado para fornecer ao Bean a função de definir a inicialização.
DisposableBean: Esta interface fornece o método Destroy (), que é usado para fornecer funções operacionais antes que a instância do Bean seja destruída.
Beannameaware: Esta interface fornece o método setBeanName (), que é usado para fornecer a função de definir o nome do feijão. A partir dos resultados em execução acima, esse método é realizado na segunda etapa.
Resumir
O exposto acima é todo o conteúdo deste artigo sobre o processo de instantar um feijão na primavera. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a este site:
" Duas maneiras de personalizar a aquisição de feijões na primavera "
" Análise de Código de Instância de Configuração da Anotação da Primavera de Java "
" Explicação detalhada do ciclo de vida da configuração e uso da primavera "
Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!