Перед прочтением этой статьи вы можете сначала ссылаться на статью « Простое понимание IOC и AOP -примеров Spring и AOP и кода » , чтобы узнать о МОК и AOP весной. Давайте перейдем к теме. Эта статья представляет, как определить и загружать бобы Java весной.
Деловые сценарии
Это также пример людей вождения. Сначала определите автомобильный интерфейс и два реализации Benz и BMW, а затем определите класс человека, который зависит от интерфейса автомобиля.
открытый интерфейс CAR {void Go ();} открытый класс Benz реализует Car {public void go () {System.out.println ("Benz Go ..."); }} открытый класс BMW реализует CAR {public void go () {System.out.println ("bmw Go ..."); }} Public Class Person {String name = ""; Автомобиль = null; public Car getCar () {return Car; } public void setCar (Car Car) {this.car = car; } public Perfor (String name) {this.name = name; } public void Drive () {System.out.println (name+"ездит ..."); car.go (); }}В классе человека мы видим, что автомобильный объект является зависимым объектом этого класса и должен быть введен в класс человека с помощью метода конструктора. Приведенный выше код все еще не имеет тени пружины. Посмотрим, как весна вводит это.
Добавить пружинные зависимости
В настоящее время многие проекты применяются к Maven для управления зависимостями, и то же самое относится и к этому проекту. Я добавлю узел зависимости в pom.xml
<Depected> <groupid> org.springframework </GroupId> <artifactId> Spring-Core </artifactid> <sersive> 3.2.6.release </version> </argefactid> <dependency> <groupid> org.springframework </GroupD> <ArtifactId> </artifactId> <версия> 3.2. <groupId> org.springframework </GroupId> <ArtifactId> Spring-Context </artifactId> <sersion> 3.2.6.Release </version> </resemency> <Dependency> <groupid> org.springframework </GroupId> <strifactId> Spring-Context </artifactId> <serse> 3.2.6.Reeles <groupId> org.springframework </GroupId> <ratifactId> Spring-Context-Support </artifactid> <sersive> 3.2.6.release </version> </depertive>
Поместите эти узлы зависимости в узел зависимостей файла pom.xml, и Eclipse автоматически загружает соответствующие пакеты в местоположение по умолчанию.
Определите и собирайте бобы вручную
Создайте новый XML -файл с именем Bean.xml в корневом каталоге проекта, со следующим контентом:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans Public "-// Spring // dtd bean // en" "http://www.springframework.org/dtd/spring-beans.dtd"> <Beans> <bean id = "car"/> <Bean идентификатор CAR-идентификатор. value = "tom" /> <name = "car" ref = "car" /> < /bean> < /beans>
Приведенный выше XML -файл сначала определяет фасоль с идентификатором в качестве автомобиля и боба с идентификатором как Tom. Автомобиль является зависимостью Тома и вручную собирается в атрибут CAR TOM через <name = "car" ref = "car" />.
Поведение создания совместных отношений между объектами приложения называется проводкой, что также является сущностью зависимости от инъекции объекта.
Затем мы создаем создание объекта контекста приложения в основном методе и получаем узел TOM в бобах.
public class app {public static void main (string [] args) {ApplicationContext context = new ClassPathxMlapplicationContext ("bean.xml"); Человек tom = (человек) context.getbean ("tom"); tom.drive (); }}Запустите программу, и результат вывода:
Том ехает ... BMW Go ...
Автоматическая сборка
Повторите еще раз, поведение создания совместной связи между объектами приложения называется проводкой, а не процессом создания объекта. В приведенном выше XML -файле я собрал объект зависимости по <name = "car" ref = "car" />, но с непрерывной разработкой приложения файл конфигурации XML определенно станет все более и более сложным. То, как мы связываем бобы с идентификационным автомобилем через ref = "car", начал отставать. Далее я представлю, как Spring реализует автоматические сборки бобов.
Типы автоматической сборки
Весна имеет четыре стратегии сборки. Чтобы уменьшить сложность этой статьи, я введу две обще используемые стратегии, метод ByName и метод ByType. Как следует из названия, метод ByName состоит в том, чтобы увидеть, одинаковы ли имя атрибута и идентификатор бобов. В этом примере класс человека имеет атрибут, называемый CAR. Если атрибут класса или изменения установлен на автоматическую сборку, а политика сборки является названием, Spring будет искать боб с идентификационным автомобилем (должно быть с тем же именем). Метод ByType заключается в сравнении, являются ли типы одинаковыми. В этом примере, если атрибут CAR класса Person Class или Person Class установлен на автоматическую сборку, а политика сборки является Bytype, поскольку автомобиль-тип автомобиля, Spring будет искать бобы типа автомобиля или его подкласс при автоматической сборке.
Используйте XML для реализации автоматической сборки
Далее я изменю код и использую метод конфигурации XML для достижения автоматической сборки.
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans Public "-// Spring // dtd bean // en" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id = "car"/> <bean id = "beame" = "beame" = "by eale". <constructor-arg value = "tom"/> </bean> </beans>
Класс личности не требует никакой модификации.
Во -первых, я удалил линию кода <propertyname = "car" ref = "/>, потому что это ручный способ. Затем я добавляю свойство Autowire = "byName" в боб с идентификатором и устанавливаю его для автоматической сборки зависимости по имени. При получении объекта человека все имена недвижимости имеют особые значения. Весна контролировал еще один атрибут, называемый CAR в классе человека, и обнаружил боб с идентификационным автомобилем в файле конфигурации, поэтому он автоматически собирался в атрибут автомобиля человека.
Автоматическая сборка посредством аннотации
Мы делаем следующие изменения в Bean.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans public "-// Spring // dtd bean // en" "http://www.springframework.org/dtd/spring-beans.dtd"> функции дефекта autwire =" byname "> <bean Id. id = "tom"> <constructor-arg value = "tom"/> </bean> </beans>
Удалите атрибут autowire = "byName" бобов с идентификатором, а затем добавьте атрибут default-autowire = "byName" в бобы узлов, чтобы установить значение по умолчанию метода автоматического сборки всех бобов, определенных в файле для ByName. Затем внесите некоторые изменения в класс человека и добавьте аннотацию @autowired в метод сеттера автомобиля, чтобы уведомить Spring для автоматической сборки свойства. Повторный код и результаты вывода остаются неизменными.
@Autowiredpublic void setcar (автомобиль) {this.car = car;}Если вы реализуете автоматическую сборку посредством аннотаций, вам необходимо сначала установить метод автоматической сборки по умолчанию на корне бобов, а затем вам не нужно настраивать атрибут Autowire для каждого фасоля, который нуждается в автоматической сборке в файле конфигурации (если метод не согласуется с по умолчанию, вы все равно можете настроить его отдельно, чтобы переопределить метод автоматического сборки «Умол»). Метод аннотации более деликатный, и он может управлять уровнем атрибутов бобов, которые необходимо автоматически собирать.
Во всем приведенном выше коде мы используем класс org.zdk.springproj1.bmw в качестве зависимости класса человека. Если классу человека не нужно управлять BMW из -за бизнес -потребностей, необходимо изменить конфигурацию на org.zdk.springproj1.benz, не изменяя какой -либо код Java. Это сила пружины как контейнер IOC.
Суммировать
Выше приведено все подробное объяснение определения пружины и бобов сборки в этой статье. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Анализ кода экземпляра на конфигурации пружинной аннотации Java
Подробное объяснение жизненного цикла использования конфигурации пружины
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!