Este artigo demonstra a injeção de propriedades como int, string, matriz, listar, definir, mapa, data, etc.
Entre eles, a injeção do tipo de data é alcançada com o editor de atributos fornecido pela primavera. Primeiro, as cinco classes de entidade são usadas.
pacote com.jadyer.model; importar java.util.date; importar java.util.list; importar java.util.map; importar java.util.set; / *** injeção de propriedades comuns* @see injeção de int, string, matriz, listar, definir, mapa, data*/ public classe bean11 {private integer intvalue; string privada strvalue; Private String [] ArrayValue; Lista de lista privada; Set SetValue Private; mapa privado mapValue; data de data privada; / * Setter e getter para sete atributos */} pacote com.jadyer.model; classe pública Bean22 {Private Bean33 Bean33; Privado Bean44 Bean4422; // injeção: irrelevante para o nome do atributo, mas relacionado ao setBean44 () Private Bean55 Bean55; / * Setter e getter para três atributos */} pacote com.jadyer.model; classe pública bean33 {private inteiro id; nome de string privado; sexo privado de cordas; / * Setter e getter para três atributos */} pacote com.jadyer.model; classe pública bean33 {private inteiro id; nome de string privado; sexo privado de cordas; / * Setter e getter para três atributos */} pacote com.jadyer.model; classe pública bean44 {private inteiro id; nome de string privado; sexo privado de cordas; idade inteira privada; /* Setter e getter dos quatro atributos são um pouco*/} pacote com.jadyer.model; classe pública bean55 {senha privada string; /* Setter e getter da senha são ligeiramente*/} Depois, há nosso conversor de tipo Java.util.util.Date personalizado
pacote com.jadyer.util; importar java.beans.propertyeditorsupport; importar java.text.parseException; importar java.text.simpledateFormat; importar java.util.date; /*** Java.util.date Editor de propriedades. Equivalente a um conversor de tipo. Aqui está para converter string para o tipo de data * @see --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Coisas do editor de propriedades personalizadas, você deve herdar a classe PropertyIditorSupport e substituir o método SeterStext () * @see finalmente, injete o editor de propriedades personalizado na primavera e depois * @see ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Void SeterStasxt (texto da string) lança ilegalArgumentException {System.out.println ("======= UtildatePropertyeditor.SeSetastext () ==========" + Texto); tente {data date = new SimpleDateFormat (padrão) .parse (text); this.setValue (data); // Nota: o que é colocado aqui é um objeto java.util.date, portanto o tempo de saída é o formato padrão} catch (parseException e) {e.printStacktrace (); lançar novas ilegalargumentException (texto); // continua a lançar exceções ilegais com parâmetros para cima}}} O arquivo ApplicationContext-beans.xml usado para todas as classes de entidade
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 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-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframwork.org/schemaop 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" padrão-lazy-init = "true"> <!-O atributo padrão-lazy-init = "true" é descrito na linha 49 do injeção. Para detalhes-> <!- ***************************************** ***************************************** ***************************************** ***************************************** ***************************************** ***************************************** ***************************************** ***************************************** Ao executar o testInjection22 (), a saída padrão será = ====== UTILLIDATEPROPERTYEDITOR.SETASTEXT () ====== 4 de junho de 2010-> <!-isto é, o padrão-lazy-init = "true" não está definido neste momento, o que significa que o valor da propriedade DateVale, que a propriedade de fôlego, não foi definida-<! Instanciar todos os objetos no arquivo de configuração e injetar-> <!-A vantagem disso é que, se algumas configurações no arquivo de configuração da primavera forem escritas incorretamente, ele poderá ser detectado imediatamente-> <!-O arquivo de configuração do Struts1.x não terá problemas se uma classe for escrita incorretamente. Somente quando for realmente executado, haverá problemas-> <!-Para a primavera, você também pode usar os atributos relevantes para adiar a inicialização do arquivo de configuração, ou seja, o padrão-lazy-init = "true"-> <!-isto é, quando é realmente usado, vá para o novo objeto e injete-o no atributo. Isso envolve preguiçoso, ou seja, a inicialização de atraso-> <!-basta modificar o arquivo de configuração da mola, como <feijões xsi: schemalocation = "http: // www ...." Default-lazy-init = "true">-> <!-O escopo da ação neste momento é o arquivo de conferência inteiro. Da mesma forma, os atributos preguiçosos de cada tag de cada <Bean> também podem ser configurados separadamente-> <!-mas isso não está definido, mas a injeção é concluída quando o feijão é criado, o que é conveniente para verificar erros-> <!- ********************************************* Será convertido automaticamente para int-> <propriedade name = "strvalue" value = "hello_spring"/> <names name = "ArrayValue"> <list> <Value> Array11 </value> <Value> Array22 </Value> </list> </Property> name = "listValue" <lor> list> <//Value> <//List> </List> name = "SetValue"> <Set> <Value> set11 </value> <Value> set22 </value> </set> </property> <propriedade name = "mapValue"> <pap> <entradas key = "key11" value = "value11"/> <stert Key = "Key22" Value "Date22"/> </map> </> </> </> <werth Key = "key22" = "Date22"/> </map> <//" O formato deve ser o mesmo que a configuração do ApplicationContext-Editor.xml-> </i bean> <bean id = "bean22"> <propriedade name = "bean33" ref = "bean33"/> <nome da propriedade = "bean44" ref = "bean"/> <nomean/"bEAN55" ref = "Bean44" "BEAN44"/> <wean/"bEan55" REFR = "BEAN44" "BEAN44"/"> id = "bean55"> <propriedade name = "senha" value = "123"/> </bean> </ Beans>
O arquivo ApplicationContext-common.xml usado para classes de entidade pública
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 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-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframwork.org/schemaop O Configuração usando feijões abstratos-> <!-Primeiro, especifique a propriedade abstrata da tag <eans> para true e depois especifique seus pais em outros <rébeiros>-> <bean id = "abstractBean" abstract = "true"> <nome da propriedade = "idi") "Nome"/"Nome"/"Nome"/"Nome"/"Bailan/" Balune "<nome"/"Nome"/"Nome"/"Nome"/"Nome"/"Zhang qing/> <> <biling") id = "bean33" parent = "abstractBean"/> <bean id = "bean44" parent = "abstractBean"> <propriedade name = "idade" value = "26"/> </i bean> </beans> <!-os protótipos de bean33 e bean4 antes do uso de abstrato são seguintes a seguir-se segui-se a seguir "" " <property name="name" value="Zhang San"/> <property name="sex" value="Male"/> </bean> <bean id="bean44"> <property name="id" value="100"/> <property name="name" value="Zhang San"/> <property name="sex" value="Male"/> <property name="age" value="90"/> </bean> -->
O arquivo ApplicationContext-Editor.xml usado para o editor de propriedades java.util.date
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 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-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframwork.org/schemaop 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"> <bean id = "utildatePropertyeditor"> <propriedade name = "padrony" value = "yyyyyy mm mês ddd"/> </bean> <!-verifique o código-fonte e descobre que um método setCustomeditores é fornecido na linha 131 da classe CustomEditorConfigurer, para que você possa injetar-> <Bean id = " key = "java.util.date" value-ref = "ustildatePropertyeditor"/> </map> </property> </beans> <!-Você também pode usar o <Bean> interno para escrever o utildatePropertyeditor internamente-> <! <!-) <!-Exemplo é o seguinte
Finalmente, a classe de teste de unidade escrita usando o Junit3.8
pacote com.jadyer.junit; import junit.framework.testcase; importar org.springframework.context.ApplicationContext; importar org.springframework.context.support.classPathXMLApplicationContext; importação com.jadyer.model.bean11; importação com.jadyer.model.bean22; classe pública PropertyInjectionTest estende o teste {private ApplicationContext Factory; @Override Protected void Setup () lança Exceção { /**** ==== Leia um único arquivo de configuração === **** /// Factory = new ClassPathXMLApplicationContext ("ApplicationContext.xml"); /****====Read multiple configuration files using arrays ====****/ //This way two configuration files will be used as one, on the surface, as two//In fact, internally as one, so in multiple configuration files, the id inside cannot be repeated // But the name attribute can be repeated, just as the difference between the person's ID number and name is the same //String[] configLocations = new String [] {"ApplicationContext.xml", "ApplicationContext-Editor.xml"}; // Factory = new ClassPathXMLApplicationContext (Configlocations); /**** ====== Use o*padrão de correspondência para ler vários arquivos de configuração ==== ****/// Um ditado popular na indústria: As convenções são melhores que a configuração //; portanto, quando houver um contrato unificado e melhor, você pode usar as funções fornecidas pela estrutura para reduzir a quantidade de configuração // se aplica: se aplica-se, se aplica, não se renda. Factory = new ClassPathXMLApplicationContext ("ApplicationContext-*. Xml"); } /*** Este método demonstra a injeção de atributos comuns, incluindo int, string, matriz, listar, definir, mapa, injeção de data* @see onde a injeção do tipo de data é implementada com a ajuda do editor de propriedades da primavera* /public void testInjection11 () {// bean11111 = new Bean11 (); // Se você é novo novo, seus atributos não serão injetados. O pré -requisito para injeção deve ser retirado do contêiner do COI antes de injetar bean11 bean11 = (bean11) fábrica.getbean ("bean11"); // Nesse momento, o Bean11 é obtido do contêiner do COI, portanto, suas dependências serão injetadas no System.out.println ("bean11.intValue =" + bean11.getIntValue ()); System.out.println ("bean11.strvalue =" + bean11.getStrValue ()); System.out.println ("bean11.arrayvalue =" + bean11.getArrayValue ()); System.out.println ("bean11.listValue =" + bean11.getListValue ()); System.out.println ("bean11.setValue =" + bean11.getSetValue ()); System.out.println ("bean11.mapValue =" + bean11.getMapValue ()); System.out.println ("bean11.dateValue =" + bean11.getDateValue ()); } / *** Este método demonstra principalmente a abstração das configurações públicas para reduzir a quantidade de configuração* / public void testInjection22 () {bean22 bean22 = (bean22) fábrica.getbean ("bean22"); System.out.println ("bean22.bean33.id =" + bean22.getBean33 (). GetId ()); System.out.println ("bean22.bean33.name =" + bean22.getBean33 (). GetName ()); System.out.println ("bean22.bean33.sex =" + bean22.getBean33 (). GetSex ()); System.out.println ("bean22.bean44.id =" + bean22.getBean44 (). GetId ()); System.out.println ("bean22.bean44.name =" + bean22.getBean44 (). GetName ()); System.out.println ("bean22.bean44.sex =" + bean22.getBean44 (). GetSex ()); System.out.println ("bean22.bean44.age =" + bean22.getBean44 (). Getage ()); System.out.println ("bean22.bean55.password =" + bean22.getBean55 (). GetPassword ()); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.