Бесплатный курс по Java: от основ до продвинутого уровня
Аннотация @Autowired в Spring Framework
В прошлом уроке мы внедряли бин админа в бин ПК с помощью конструктора или сеттера помеченных аннотацией @Autowired. Но аннотация @Autowired намного мощнее.
Если мы просто пометим нужное поле в классе аннотацией @Autowired, нам даже не нужно будет писать конструктор или сеттердля внедрения этого поля в бин, который создается на основе этого класса. Тем самым можно сократить количество кода в классе.
Класс ServerPC:
package com.someclasses;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.beans.factory.annotation.Value;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component(“serverPCBean”)
@Scope(“singleton”)
public class ServerPC {
//Аннотация Autowired может внедрять
//зависимости без написаного конструктора или сеттера.
//Аннотацию нужно просто написать над полем, которое
//должно быть внедрено извне
@Autowired
private Administrator admin;
@Value(“${pcid}”)
private String pcid;
@Value(“Acer”)
private String pcBrand;
ServerPC () { }
//Нижние два метода для внедрения user в бин
//этого класса теперь можно закомментировать.
/*
@Autowired
public ServerPC (Administrator admin) {
this.admin = admin;
}
@Autowired
public void setAdmin(Administrator admin) {
this.admin = admin;
}
*/
public Administrator getAdmin() {
return admin;
}
public void setPcid(String pcid) {
this.pcid = pcid;
}
public void setPCBrand(String pcBrand) {
this.pcBrand = pcBrand;
}
public String getPcid() {
return pcid;
}
public String getPCBrand() {
return pcBrand;
}
public void typeOfPC() {
System.out.println(“Its server PC!”);
}
public void getAdminMessage() {
admin.adminMessage();
}
//Помечаем метод инициализации
//(как в xml init-method)
@PostConstruct
public String someInitializationsMethod() {
return “Some initializations”;
}
//Помечаем метод, который выполняется при
//уничтожении бина (как в xml destroy-method)
@PreDestroy
public String someCleaningsMethod() {
return “Some clean up”;
}
}
Настройка Spring бинов через Java класс вместо XML. Практическое руководство по конфигурации с @Configuration, @Bean и внедрению зависимостей в Spring Framework.