Это 15-й день моего участия в Gengwen Challenge.Подробности о мероприятии, пожалуйста, проверьте:Обновить вызов
Статьи по Теме
Весенняя серия:Весенняя серия
Автопроводка с использованием аннотаций
- В прошлой статье мы объяснили несколько способов автоматической сборки Spring.На самом деле, в реальной разработке мы используем аннотации для реализации сборки.
1. @Autowired
① Прежде всего, вот что: старайтесь не использовать заголовочный файл bean-компонентов, автоматически созданный idea для импорта, его необходимо заполнить, иначе будет сообщено об ошибке:② Дополнительный заголовок вводного файла:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
③xml: включить поддержку аннотаций атрибутов
<!--开启属性注解支持-->
<context:annotation-config/>
<bean id="car" class="entity.Car"/>
<bean id="house" class="entity.House"/>
<bean id="person" class="entity.Person"/>
④Класс объекта:
public class Person {
@Autowired
private Car car;
@Autowired
private House house;
private String name;
private int age;
private String like;
public Car getCar() {
return car;
}
public House getHouse() {
return house;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getLike() {
return like;
}
}
public class Car {
public void getName(){
System.out.println("我是一辆车!");
}
}
public class House {
public void getName(){
System.out.println("我是一栋房子!");
}
}
⑤Тестовый класс:
public class TestAnonatation {
public static void main(String[] args) {
ApplicationContext Context = new ClassPathXmlApplicationContext("ContextAplication.xml");
Person person = Context.getBean("person",Person.class);
person.getCar().getName();
person.getHouse().getName();
}
}
⑥Результат выполнения:⑦Обзор:
- После использования @Autowired метод set в классе Person можно опустить, что упрощает объем кода.
- @Autowired(required = false) Значение по умолчанию — true, объект не может быть нулевым, false означает, что объект может быть нулевым
- @Autowired фактически эквивалентен автоматической сборке byType, которая автоматически собирается в соответствии с типом
2. @Квалификатор
- @Qualifier — это комбинированная аннотация, которую нельзя использовать отдельно.
- Используйте @Autowired для указания сборки byName()
@Autowired
@Qualifier(value = "car")
private Car car;
@Autowired
@Qualifier(value = "house")
private House house;
- Обратите внимание на это, вы можете напрямую указать указанное местоположение xml!
- Результаты:
3. @Ресурс
①xml:
@Resource(name = "car")
private Car car;
@Resource
private House house;
②Результат выполнения:
③Резюме:
- При указании имени предпочтение отдается byName, при этом id в xml не может быть пустым!
- Если он не указан, по умолчанию преобладает byName, в случае неудачи превалирует byType!
- Все провал!
4. Сходства и различия между @Autowired и @Resource
Сходства и различия между @Autowired и @Resource:
-
И @Autowired, и @Resource могут использоваться для связывания bean-компонентов. Может быть написано в поле или написано в методе установки.
-
@Autowired по умолчанию собирается по типу (принадлежит спецификации spring).По умолчанию должен существовать зависимый объект.Если вы хотите разрешить нулевые значения, вы можете установить для его обязательного свойства значение false, например: @Autowired(required= false), если мы хотим, чтобы сборка с использованием имени могла использоваться в сочетании с аннотацией @Qualifier
-
@Resource (принадлежит возврату J2EE), по умолчанию собирается по имени, а имя можно указать через атрибут name. Если атрибут имени не указан, то при написании аннотации к полю имя поля используется для поиска по имени по умолчанию.Если аннотация написана по методу установки, имя атрибута используется для сборки по умолчанию. Собрать по типу, когда не найдено ни одного компонента, соответствующего имени. Но следует отметить, что если указан атрибут name, то он будет собран только по имени.
-
У них одинаковая функция и они внедряются в объект по аннотации, но порядок выполнения разный. Сначала @Autowired по типу, сначала @Resource по имени
Впереди долгий путь, и я обязательно буду его искать вдоль и поперёк~
Если вы думаете, что я блогеры хорошо пишу! Писать нелегко, пожалуйста, ставьте лайки, подписывайтесь и комментируйте, чтобы поощрять блоггеров ~ хахах