Простая ссылка на использование Spring-IOC:
Анализ простых экземпляров атрибутов Spring IOC и сфера бобов
1. Внедряйте разные типы данных с помощью метода SET
Код тестового класса (свойства, введенные в метод SET, должны быть добавлены с помощью метода SET)
/** Пример внедрения с помощью метода установки*/public Class ioc_by_set {/** Parameter Integer Type*/Private Integer ID;/** Параметр типа строки внедрения*/private строка set;/** nject map-pares value pars*/private map <объект, объект> map;/** Тип ввода*/Private Properties Properties;/** Inject Empty String*/Private String EmptyValue;/** inject nul {return false;} else {System.out.println ("id:" + id);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } system.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- множество) {System.out.println(object.toString());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. {System.out.println ("set:"); for (объект объекта: set) {System.out.println(object.toString());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. {System.out.println (entry.getKey () + "|" + entry.getValue());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. entry.getValue());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- setName (String name) {this.name = name;} public void setUser (пользователь пользователя) {this.user = user;} public void setarray (object [] array) {this.array = array;} public void setlist (list> list) {this.list = list;} public setset (set <object> set) {this.set = set set; setmap (map <object, object> map) {this.map = map;} public void setPerperties (свойства свойств) {this.properties = свойства;} public void setemptyvalue (string ulmvalue) {this.emptyvalue = wyletvalue;} public void setNullue (string nullvalue) nullvalue;}}ApplicationContext.xml Конфигурация
<!-Установите внедрение-> <bean id = "ioc_by_set"> <!-атрибут идентификатора инъекции-> <name = "id" value = "1"/> <!-Использование <!-Обработка специальных символов XML с <!-Использование <! [CDATA []]>>>>>>>>>> <dulch> <! [cdata [p & g]]> </value> </property> <!-определение внутреннего впрыска бобов-> <name = "user"> <bean> <name = "id" value = "1"/> <name = "username" value = "Внутреннее бон"/> name = "value =" 233 "/> </bean> </>-in name =" value = "233"/> </bean> </>-in name = "value =" 233 "/> </bean> </>-in name =" value = "233"/> </bean> </in name = " name="array"> <array> <!-- Define array elements--> <value>array01</value> <value>array02</value> <value>array03</value> </array> </property> <!-- Inject List type--> <property name="list"> <list> <!-- Define elements in list--> <value>list01</value> <value>list02</value> <dulch> list03 </value> </list> </property> <!-Inject Set Type-> <свойство> <свойство --- Определить элементы в списке-> <datue> list02 </value> <datue> list03 </value> </list> </properation> <!-Внедрение типа набора-> <property name = "set"> <set> <! <value>set02</value> <value>set03</value> </set> </property> <!-- Inject Map type--> <property name="map"> <map> <!-- Define key-value pairs in map --> <entry> <key> <value>mapKey01</value> </key> <value>mapValue01</value> </entry> <entry> <key> <value>mapKey02</value> </key> <dulch> mapValue02 </value> </intry> </map> </property> <!-Типы свойств ввода-> <name = "Свойства"> <props> <!-Определить пары ключевых значений в свойствах-> <prop wee = "propkey1"> propvalue1 </prop> <prop = "propkeo2" <!-Inject пустая строка-> <name = name = "EmptyValue"> <dall> </value> </property> <!-Inject Null Value-> <name = "nullvalue"> <null/> </property> </bean>
Тестовый код
Общедоступный класс ioc_test {private ApplicationContext ctx; @before public void load () {// Читать ApplicationContext.xml Файл конфигурации ctx = new classpathxmlapplicationcontext ("ApplicationContext.xml");}@test public vide settest () {ioc_by_set = (ioc_se_se_se_set) ctx.getbean ("ioc_by_set"); ioc.checkattr ();}}Результаты консоли:
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. 3-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
2. Внедрить различные типы атрибутов с помощью методов строительства
Примечание. При использовании версии JDK1.8, пожалуйста, обновите пакет JAR, связанный с пружиной, до версии 4.x или выше, в противном случае будут введены несовместимые конструкторы.
Тестовый код класса
/** Пример впрыска через конструктор*/public Class ioc_by_constructor {private integer id; имена частного строки; частный пользователь; частный список <object> list; public ioc_by_constructor () {} public ioc_by_constructor (integer id, string ame user, list> list) {this.id = this. Список;}/** Проверьте, является ли инъекция успешной*/public boolean checkattr () {if (id == null) {return false;} else {System.out.println ("id:" + id);}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + "|" + user.getUsername () + "|" + user.getPassWord());}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- истинный;}}ApplicationContext.xml Конфигурация
<!-constructor-arg value = "p & g"/> <!-объект инъекции-> <bean id = "ioc_by_constructor"> <!-объект инъекции-> <bean> <constructor-arg value = "1" type = "java.lang.integer"/> <!-in invection string-> <constructor-value = "p & g"/>->->->-upectection value = "p & g"/>->-! <strongure-arg> <!-встроенный объект-> <bean> <constructor-arg value = "1"/> <constructor-arg value = "Construction Internal Bean"/> <constructor-arg value = "666"/> </bean> </constructor-arg> <!-inject collection-> <constructor-arg> <salt> <calit> <sall> </vilft> </vilft> </vilf> </vilf> </valile> </valile> </constructor> </constructor-arg> <! <dulch> list02 </value> <dall> list03 </value> </list> </constructor-arg> </bean>
Тестовый код:
открытый класс ioc_test {private ApplicationContext ctx; @before public void load () {// Читать ApplicationContext.xml файл конфигурации ctx = new classpathxmlapplicationcontext ("applicateContext.xml");}@test public void constructortest () {ioc_by_contructor ioc = (ioc_cby_cby_cby_cbyr ctx.getbean ("ioc_by_constructor"); ioc.checkattr ();}}Результаты консоли:
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ! !
3. Автоматическая инъекция (автоматическая сборка)
Хотя автоматическая сборка может сохранить некоторый код, не рекомендуется его использовать
Тестовый код класса:
/** Автоматическая сборка сборки*/открытый класс ioc_by_auto {частный пользователь;/** Проверьте, является ли инъекция успешной*/public boolean checkattr () {if (user == null) {return false;} else {System.out.println ("user:" + user.getId () + " +" + user.getUseRENAME () + " user.getPassword ());} system.out.println ("правильно !!!"); return true;}/** Атрибут автоматической сборки требует настройки метода SET*/public void setUser (пользователь пользователя) {this.user = user;}}ApplicationContext.xml Конфигурация
<!-Бобы, полученные с помощью автоматической сборки-> <bean id = "user"> <name = "id" value = "1"/> <name = "username" value = "Auto-Assembly"/> <name = "password" value = "233"/> </bean> <!-Bean Autowire: ByName AutoWire: By By By By By By By By By By By By By By By By By By's Only в соответствии с названием «Собственность, в соответствии с названием« Найти, на «Матч-матче», «Найти номинации по названию». тип класса. Если совпадают с несколькими бобами, бросьте конструктор исключений, соответствующий соответствующим бобам в соответствии с типом параметра конструктора класса. Нет. По умолчанию, означает, что автоматическая сборка по умолчанию не используется: определяется свойством по умолчанию-автообороте верхней метки <Боевые>-> <bean id = "ioc_by_auto" autowire = "byname"> </bean>
Тестовый код
открытый класс ioc_test {private ApplicationContext ctx; @before public void load () {// Читать ApplicationContext.xml Файл конфигурации ctx = new classpathxmlapplicationcontext ("applicationContext.xml");}@test public void autotest () {ioc_by_auto ioc = (ioc_aut) ctx.getbean ("ioc_by_auto"); ioc.checkattr ();}}Результаты консоли
Пользователь: 1 | Автоматическая сборка | 233 это правильно! ! !
Выше используется режим ByName. Код конфигурации других режимов был указан, и тестирование не проводится.
4. инъекционные атрибуты с использованием p -пространства P имен
Тестовый код класса
/** Инъекция с использованием p namespace*/public class ioc_by_p {private integer id; private строковое имя; частный пользователь;/** Проверьте, является ли инъекция успешной*/public boolean checkattr () {if (id = null) {return false;} els id);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } system.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id) {this.id = id;} public void setName (string name) {this.name = name;} public void setuser (пользователь пользователь) {this.user = user;}}ApplicationContext.xml Конфигурация
<!-вводите различные типы свойств, используя пространство p имен-> <bean id = "user2"> <name = "id" value = "1"/> <name = "username" value = "p"/> <name = "password" value = "233"/> </bean> <bean id = "ioc_by_p" p: id = "1" P: name = name = "name =" p: name = name = "p: name =" p: name = "p: name = name =" p: name = "p: name =" p: name = name = "p: name = name =" p: name = name = "p: name = name =" p: name = name = "p: name = name" P: user-ref = "user2"> </bean>
Тестовый код
открытый класс ioc_test {private ApplicationContext ctx; @before public void load () {// Читать ApplicationContext.xml файл конфигурации ctx = new classpathxmlapplicationcontext ("ApplicationContext.xml");}@test public void ptest () {ioc_by_p = (ioc_b_p) ctx.getbean ("ioc_by_p"); ioc.checkattr ();}}Результаты консоли
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ! !
5. Ввод с использованием метода аннотации
Spring обеспечила инъекцию на основе аннотаций после 3.0.
1.@Autowired-Anantation переменных членов, методов и конструкторов для завершения автоматической сборки сборки. Не рекомендуется использовать его.
2. @Квалификатор, связанный с @autowired для решения сборки нескольких бобов одного типа
3. @Resource-JSR-250 Стандартная аннотация, функция эквивалентна @autowired, но @autowired автоматически вводится в соответствии с байтипом, в то время как @Resource автоматически вводится в соответствии с ByName по умолчанию.
4. @PostConstruct - Добавьте аннотацию @PostConstruct к методу, и этот метод будет выполнен контейнером Spring после инициализации бобов.
5. @Annotation @predestroy @predestroy-add На методе этот метод будет выполнен пружинным контейнером после инициализации бобов.
6. @только компонент Добавьте аннотацию @Component в соответствующий класс, класс определяется как боб. Не рекомендуется использовать его. Рекомендуется использовать еще три изысканных типа: @Repository, @Service, @Controller
@Repository Storage Layer Bean
@Service Business Layer Bean
@Controller Display Layer Bean
7.@Обладает применением охвата боба
Сначала настроить ApplicationContext.xml, чтобы включить аннотацию
<!-сканировать аннотированный класс в пакете-> <Контекст: компонент-сканирование Base-package = "com.bc.ioc.demo05"/>
Аннотация бобов сущности
@RepositoryPublic Class Пользователь {private Integer id = 1; private String username = "Аннотация";; Private String password = "233"; public user () {super ();} public user (integer id, string username, string password) {super (); this.id = id; String getUsername () {return username;} public String getPassword () {return password;} public void setId (integer id) {this.id = id;} public void setUsername (string username) {this.username = username;} public void setPassword (String password) {this.pass = пароль;Аннотация кода тестового класса
/** инъекционные атрибуты с использованием аннотаций*/@service ("ioc_by_annotation") открытый класс ioc_by_annotation {@resource частного пользователя; public void setUser (пользователь пользователя) {this.user = user;}/** Проверьте, является ли инъекция успешной*/public boolean checkattr () {uster = null). {System.out.println ("user:" + user.getId () + "|" + user.getUsername () + "|" + user.getPassword ());} system.out.println ("Правильно !!!"); return true;}}Тестовый код
открытый класс ioc_test {private ApplicationContext ctx; @before public void load () {// Читать ApplicationContext.xml Файл конфигурации ctx = new classpathxmlapplicationcontext ("applicateContext.xml");}@test public void annotationTest () {ioc_by_annation ioc = (ioc_annotation) {ioc_by_annotation ioc ctx.getbean ("ioc_by_annotation"); ioc.checkattr ();}}Консоль вывод
После тестирования с использованием аннотационных инъекций. Если ApplicationContext.xml настроен с другими методами впрыска, сообщается об ошибке, которая также приведет к ненормальным методам инъекции.
Пользователь: 1 | Аннотация впрыска | 233 - это правильно! ! !
6. Инъекция бобов путем настройки метода статического завода
Статический заводский код
/** Статическая фабрика*/public Class staticfactory {public static integer getId () {return 1;} public static String getName () {return "Статический завод";} Общественный статический пользователь getUser () {return new Пользователь (1, «Заводский пользователь», «666»);}}}}}}}}}}}}}}}}Тестовый код класса
/** Внедрение через статическую фабрику*/public class ioc_by_staticfactory {private integer id; private String name; частный пользователь пользователь;/** Проверьте, является ли инъекция успешной*/public boolean checkattr () {id == null) {return false;} els id);}System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } system.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id) {this.id = id;} public void setName (string name) {this.name = name;} public void setuser (пользователь пользователь) {this.user = user;}}ApplicationContext.xml Конфигурация
<!-Настройка статического фабричного метода Bean фактически настраивает значение, возвращаемое заводским методом как фасоль-> <bean id = "factory_id" factory-method = "getId"/> <bean id = "factory_name" factory-method = "getName"/> <bean id = "factory_sery" factory-method = "getName"/> <bean id = "factory_user" id = "ioc_by_staticfactory"> <name = "id" ref = "factory_id"/> <name = "name" ref = "factory_name"/> <name = "user" ref = "factory_user"/> </bean>
Тестовый код
открытый класс ioc_test {private ApplicationContext ctx; @before public void load () {// Читать ApplicationContext.xml Файл конфигурации ctx = new classpathxmlapplicationcontext ("applicateContext.xml");}@test public void StateCaringtest () {ioc_by_statiz ctx.getbean ("ioc_by_staticfactory"); ioc.checkattr ();}}Консоль вывода результатов
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ! !
7. Инъекция с помощью примера заводского метода
Разница от статической фабрики заключается в том, что завод экземпляра не является статичной. Вам необходимо сначала новый заводский объект экземпляра, прежде чем вы сможете настроить его метод. Новый объект также управляется весной.
Заводский код
/** экземпляр Factory*/public Class Factory {public integer getId () {return 1;} public String getName () {return "Encement Factory";} public User getUser () {return New User (1, "Factory пользователь экземпляра", "233");}}Тестовый код класса
/** Инъекция фабрики экземпляра*/public class ioc_by_factory {private Integer Id; Private String name; частный пользователь;/** Проверьте, является ли инъекция успешной*/public boolean checkattr () {if (id == null) {return false;} els id);}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } system.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id) {this.id = id;} public void setName (string name) {this.name = name;} public void setuser (пользователь пользователь) {this.user = user;}}ApplicationContext.xml Конфигурация
<!-Настройте заводский фабричный бен экземпляра-> <bean id = "factory"/> <!-Настройте фабрику метода экземпляра Bean-> <Bean id = "f_id" Factory-bean = "factory" factory-method = "getId"/> <bean id = "f_name" factory-bean = "factory-method =" getName "/> <beane"/"beane"/"beane"/"beane"/"beane"/"beane"/"beane"/"bean"/"/" bean "/"/"bean". Factory-bean = "factory" factory-method = "getUser"/> <!-инъекция соответствующего экземпляра фабричного метода Bean-> <bean id = "ioc_by_factory"> <name = "id" ref = "f_id"/> <name = "name" ref = "f_name"/> <property name = "user" ref = "F_Ureser"/> </bean> </> </> </> </> </> </> </> </> </> </> </> </> </> </bean> </> </> </bean> </> </> </> <property "
Тестовый код класса
открытый класс ioc_test {private ApplicationContext ctx; @before public void Load () {// Читать ApplicationContext.xml Файл конфигурации ctx = new classpathxmlapplicationcontext ("applicateContext.xml");}@test public void factorytest () {ioc_by_factor ctx.getbean ("ioc_by_factory"); ioc.checkattr ();}}Консоль вывод
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ! !
Суммировать
Вышеупомянутое краткое обсуждение этой статьи о методе инъекции пружинного МОК и инъекции различных типов данных. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!