Эта статья демонстрирует инъекцию свойств, таких как Int, String, Array, List, Set, Map, Date и т. Д.
Среди них инъекция типа даты достигается с помощью редактора атрибутов, предоставленного к весне. Во -первых, используются пять классов сущностей.
пакет com.jadyer.model; импортировать java.util.date; импортировать java.util.list; импортировать java.util.map; импортировать java.util.set; / *** Инъекция общих свойств* @see Инъекция int, строки, массив, список, установить, карту, дата*/ public class bean11 {private integer intvalue; частная строка strvalue; частная строка [] arrayvalue; частные списки ListValue; частный набор setValue; Частная карта MapValue; частная дата DateValue; / * Setter и Getter для семи атрибутов */} пакет com.jadyer.model; Public Class Bean22 {Private Bean33 Bean33; Частный Bean44 Bean4422; // Инъекция: не имеет отношения к имени атрибута, но связано с SetBean44 () Private Bean55 Bean55; / * Setter и Getter для трех атрибутов */} пакет com.jadyer.model; Public Class Bean33 {Private Integer ID; Приватное название строки; частный строковый секс; / * Setter и Getter для трех атрибутов */} пакет com.jadyer.model; Public Class Bean33 {Private Integer ID; Приватное название строки; частный строковый секс; / * Setter и Getter для трех атрибутов */} пакет com.jadyer.model; Public Class Bean44 {Private Integer ID; Приватное название строки; частный строковый секс; частный целый возраст; /* Setter и Getter из четырех атрибутов немного*/} пакет com.jadyer.model; открытый класс Bean55 {Private String Password; /* Setter и Getter пароля немного*/} Тогда есть наш пользовательский конвертер типа java.util.date
пакет com.jadyer.util; Импорт java.beans.propertyeditorsupport; импортировать java.text.parseexception; импортировать java.text.simpledateformat; импортировать java.util.date; /*** java.util.date Editor. Эквивалентно конвертеру типа. Вот конвертировать строку в тип времени * @see --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Индивидуальные редакторы свойств, вы должны унаследовать класс PropertyTitorSupport и перезаписать метод setaStxt () * @See, наконец, введите редактор пользовательских свойств в Spring, а затем * @see -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void setaStxt (строковый текст) Throws allogalargumentException {System.out.println ("======== utildatePropertyEditor.setaStext () =========" + Text); try {date date = new SimpleDateFormat (pattern) .parse (text); this.SetValue (дата); // Примечание. То, что здесь помещается, является объектом java.util.date, поэтому время вывода - это формат по умолчанию} Catch (parseexception e) {e.printstacktrace (); бросить новое allogalargumentException (текст); // продолжать делать незаконные исключения с параметрами вверх}}} Файл ApplicationContext-beans.xml, используемый для всех классов объектов
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http://wwww.springform. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop 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-in " <!-Атрибут по умолчанию-lazy-init = "true" описан в строке 49 incectionTest.java Class-> <!-Default-Autowire = "ByName или Bytype"-это два способа автоматической сборки бобов, предоставляемых Spri0ng. Для получения подробной информации-> <!- ***************************************************** • ***************************************************** • ***************************************************** • ***************************************************** • ***************************************************** • ***************************************************** • ***************************************************** • ***************************************************** • Вывод по умолчанию будет ====== utildatePropertyEditor.setaStext () ======== 4 июня 2010 г.-> <!-То есть, по умолчанию-лейзи-инит = "true" не установлено в это время, что означает, что значение DateValue в Bean11 было инъецировано->-на самом деле, когда наполняет все, что будет вновь, что наполняет все, что будет в соответствии с набором, в целом. и Inject-> <!-Преимущество этого заключается в том, что если некоторые конфигурации в файле конфигурации пружины записаны неправильно, его можно обнаружить немедленно-> <!-файл конфигурации Struts1.x не будет иметь никаких проблем, если класс будет написан неправильно. Только когда это на самом деле будет выполнено, будут проблемы-> <!-Для Spring вы также можете использовать соответствующие атрибуты, чтобы задержать инициализацию файла конфигурации, то есть по умолчанию-lazy-init = "true"-> <!-то есть, когда он фактически используется, перейдите к новому объекту и введите его в атрибут. Это включает в себя ленивую, то есть инициализацию задержки-> <!-Просто измените файл конфигурации пружины, такой как <Бобовые XSI: Schemalocation = "http: // www ...." "По умолчанию-lazy init =" true ">-> <!-Объем действий в настоящее время-это файл конфигурации. Точно так же атрибуты Lazy-Init каждого тега <Bean> также могут быть настроены отдельно-> <!-но это не установлено, но инъекция завершается при создании Beanfactory, что удобно для проверки ошибок-> <! ******************************************************************* • 123 will automatically convert to int--> <property name="strValue" value="Hello_Spring"/> <property name="arrayValue"> <list> <value>array11</value> <value>array22</value> </list> </property> <property name="listValue"> <list> <value>list11</value> <value>list22</value> </list> </property> <имя свойства = "setValue"> <Set> <date> set11 </value> <dall> set22 </value> </set> </properation> <name = "mapValue"> <Map> <intry key = "value =" value11 "/> <intpirt key =" key22 "value 22"/> </map> </> <proportment> <propertain> <value = value = "value22"/> </map> </> </> <propertaviefule> "value". 2010 "/> <!-Здесь формат даты должен быть такой же, как и конфигурация ApplicationContext-editor.xml-> </bean> <bean id =" bean22 "> <name =" bean33 "ref =" bean33 "/> <name =" bean44 "ref =" bean44 "/> <собственность =" bean55 "ref =" bean5 "/>"/> "/>"/> ". id = "bean55"> <name = "password" value = "123"/> </bean> </beans>
Файл ApplicationContext-common.xml, используемый для классов общественных организаций
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http://wwww.springform. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop 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. beans--> <!-- First, specify the abstract property of the <bean> tag to true, and then specify its parent in other <beans>--> <bean id="AbstractBean" abstract="true"> <property name="id" value="2"/> <property name="name" value="Zhang Qiling"/> <property name="sex" value="Male"/> </bean> <bean id="bean33" parent = "AbstractBean"/> <bean id = "bean44" parent = "Abstractbean"> <name = "age" value = "26"/> </bean> </beans> <!-Прототипы Bean33 и Bean44, прежде чем использовать Abstractbean, следующие:> <!-<Bean id = "bean33"> <phipe name = "value =" 100 vame ". value = "Zhang San"/> <name = "sex" value = "male"/> </bean> <bean id = "bean44"> <name = "id" value = "100"/> <name = "name" value = "Zhang San"/> <name = "sex" value = "male"/> name = "Age" value = "90"/> </> </> </> </> </> </> </> </> </> </> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -value = "/> name"
Файл ApplicationContext-editor.xml, используемый для редактора свойств java.util.date
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http://wwww.springform. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop 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. id="utilDatePropertyEditor"> <property name="pattern" value="yyyyy MM month ddd"/> </bean> <!-- Check the source code and find that a setCustomEditors method is provided in line 131 of the CustomEditorConfigurer class, so you can inject --> <bean id="customEditors"> <property name="customEditors"> <map> <entry key = "java.util.date" value-ref = "utildatePropertyEditor"/> </map> </property> </beans> <!-Вы также можете использовать внутренний <Bean>, чтобы написать utildatePropertyEditor внутренне-> <! <bean>--> <!-- Example is as follows-> <!-- <bean id="customEditors"> <property name="customEditors"> <map> <entry key="java.util.Date"> <bean> <property name="pattern" value="yyyyy MM month ddd day"/> </bean> </entry> </map> </property> </bean> -->
Наконец, класс модульного тестирования, написанный с использованием JOUNIT3.8
пакет com.jadyer.junit; Импорт junit.framework.testcase; Импорт org.springframework.context.applicationContext; Import org.springframework.context.support.classpathxmlapplicationContext; Импорт com.jadyer.model.bean11; импорт com.jadyer.model.bean22; Public Class PropertyInctionTest Extends TestCase {Private ApplicationContext Factory; @Override Protected void setup () Throws Exception { /**** ==== Прочтите один файл конфигурации ==== **** /// factory = new ClassPathXmlApplicationContext ("ApplicationContext.xml"); /**** ==== Прочтите несколько файлов несколько конфигурации с использованием массивов ==== ****/// Таким образом, два файла конфигурации будут использоваться в качестве одного, на поверхности, как два // на самом деле, как один, так же, поэтому в нескольких файлах конфигурации идентификатор внутри не может быть повторен //, но атрибут имени. String [] {"ApplicationContext.xml", "ApplicationContext-editor.xml"}; // factory = new ClassPathxMlapplicationContext (configlocations); /**** ======= Используйте шаблон*Соответствия для чтения нескольких файлов конфигурации ==== ****/// Популярное высказывание в отрасли: Конвенции лучше, чем конфигурация //, поэтому, когда существует единое и лучшее согласие, вы можете использовать функции, предоставленные в рамках, чтобы уменьшить количество конфигурации // в дополнение: applicationContext-*. ClassPathxMlapplicationContext ("ApplicationContext-*. XML"); } /**. // Если вы просто новые, то его атрибуты не будут введены. Предварительное условие для инъекции должно быть выведено из контейнера IOC до того, как он вводит Bean111111 = (bean11) factory.getbean ("bean11"); // В это время Bean11 получается из контейнера IOC, поэтому его зависимости будут введены в 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 ()); } / *** Этот метод в основном демонстрирует абстракцию публичных конфигураций, чтобы уменьшить количество конфигурации* / public void testinuction22 () {bean22 bean22 = (bean22) factory.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 ()); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.