Рубрики
Без рубрики

Пружинные компоненты автоматической проводки с аннотацией @Autowired

– Пружинные компоненты автоматической проводки с аннотацией @Autowired

В последнем Весеннем автоматическом подключении в XML примере он автоматически подключит соответствующее свойство любого компонента в текущем контейнере Spring. В большинстве случаев вам может потребоваться свойство autowired только в определенном компоненте.

Весной вы можете использовать @Autowired аннотацию для автоматического подключения компонента к методу настройки, конструктору или полю. Более того, он может автоматически подключать свойство в определенном компоненте.

Смотрите следующий полный пример, чтобы продемонстрировать использование @Autowired .

1. Зернышки

Компонент клиента и объявлен в файле конфигурации компонента. Позже вы будете использовать ” @Autowired ” для автоматического подключения компонента person.

package com.mkyong.common;

public class Customer 
{
	//you want autowired this field.
	private Person person;
	
	private int type;
	private String action;
	
	//getter and setter method
	
}


	
		
		
	

	
		
		
		
	
	

2. Регистрируйте автонастраиваемую аннотацию в постпроцессоре

Чтобы включить @Autowired , вам нужно зарегистрироваться ‘ AutowiredAnnotationBeanPostProcessor ‘, и вы можете сделать это двумя способами:

1. Включить <контекст: аннотация-конфигурация/>

Добавьте контекст Spring и <контекст:аннотация-конфигурация/> в файл конфигурации компонента.


	//...

	
	//...

Полный пример,



	

	
		
		
	

	
		
		
		
	
	

2. Включить автозаполняемую аннотацию-постпроцессор

Включите “AutowiredAnnotationBeanPostProcessor” непосредственно в файл конфигурации компонента.




	
	
		
		
	

	
		
		
		
	
	

3. @Примеры с автоматической проводкой

Теперь вы можете автоматически подключать компонент через @Autowired , и он может быть применен к методу настройки, конструктору или полю.

1. @Метод автоматической настройки
package com.mkyong.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer 
{
	private Person person;
	private int type;
	private String action;
	//getter and setter methods
	
	@Autowired
	public void setPerson(Person person) {
		this.person = person;
	}
}
2. @@Автоматический конструктор
package com.mkyong.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer 
{
	private Person person;
	private int type;
	private String action;
	//getter and setter methods
	
	@Autowired
	public Customer(Person person) {
		this.person = person;
	}
}
3. @Автоматически подключенное поле
package com.mkyong.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer 
{
	@Autowired
	private Person person;
	private int type;
	private String action;
	//getter and setter methods
}

Приведенный выше пример автоматически подключит “Personbean” в свойство person Клиента.

Запустите его

package com.mkyong.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App 
{
    public static void main( String[] args )
    {
    	ApplicationContext context = 
    	  new ClassPathXmlApplicationContext(new String[] {"SpringBeans.xml"});
    	
    	Customer cust = (Customer)context.getBean("CustomerBean");
    	System.out.println(cust);
    	
    }
}

Выход

Customer [action=buy, type=1, 
person=Person [address=address 123, age=28, name=mkyong]]

Проверка зависимостей

По умолчанию @Autowired выполнит проверку зависимостей, чтобы убедиться, что свойство подключено правильно. Когда Spring не может найти подходящий боб для подключения, он выдаст исключение. Чтобы исправить это, вы можете отключить эту функцию проверки, установив для атрибута ” обязательно ” @Autowired значение false.

package com.mkyong.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer 
{
	@Autowired(required=false)
	private Person person;
	private int type;
	private String action;
	//getter and setter methods
}

В приведенном выше примере, если Spring не может найти соответствующий компонент, он оставит свойство person не заданным.

@Квалификатор

Аннотация @квалификатора, которую мы использовали для управления тем, какой компонент должен быть автоматически подключен к полю. Например, файл конфигурации компонента с двумя похожими компонентами person.



	

	
		
		
	

	
		
		
		
	
	
	
		
		
		
	
	

Будет ли Весна знать, какой боб следует подключить?

Чтобы исправить это, вы можете использовать @Квалификатор для автоматического подключения определенного компонента, например,

package com.mkyong.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class Customer 
{
	@Autowired
	@Qualifier("PersonBean1")
	private Person person;
	private int type;
	private String action;
	//getter and setter methods
}

Это означает, что компонент “Personbean 1” автоматически подключается к свойству пользователя Клиента. Прочитайте этот полный пример – Пример автоматического подключения пружины @Квалификатор

Вывод

Эта @Autowired аннотация является очень гибкой и мощной и определенно лучше, чем атрибут ” autowire ” в файле конфигурации компонента.

Скачать Исходный Код

Оригинал: “https://mkyong.com/spring/spring-auto-wiring-beans-with-autowired-annotation/”