Топ-100Аннотация @Autowired в Spring Framework - CodOrbits
LogoCodOrbits

Раздел: Spring Framework

Изучите Spring Framework — один из самых популярных фреймворков Java для создания гибких и масштабируемых приложений.

Все разделы
Иконка Spring Framework

Аннотация @Autowired в Spring Framework

Last updated: 10 мая 2025 г.

В прошлом уроке мы внедряли бин админа в бин ПК с помощью конструктора или сеттера помеченных аннотацией @Autowired. Но аннотация @Autowired намного мощнее.

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

Класс ServerPC:

1package com.someclasses;
2
3import org.springframework.stereotype.Component;
4import org.springframework.beans.factory.annotation.Autowired;
5import org.springframework.beans.factory.annotation.Qualifier;
6import org.springframework.context.annotation.Scope;
7import org.springframework.beans.factory.annotation.Value;
8import javax.annotation.PostConstruct;
9import javax.annotation.PreDestroy;
10
11@Component("serverPCBean")
12@Scope("singleton")
13public class ServerPC {
14
15    //Аннотация Autowired может внедрять
16    //зависимости без написаного конструктора или сеттера.
17    //Аннотацию нужно просто написать над полем, которое
18    //должно быть внедрено извне
19    @Autowired
20    private Administrator admin;
21
22    @Value("${pcid}")
23    private String pcid;
24
25    @Value("Acer")
26    private String pcBrand;
27
28    ServerPC () { }
29
30    //Нижние два метода для внедрения user в бин
31    //этого класса теперь можно закомментировать.
32    /*
33    @Autowired
34    public ServerPC (Administrator admin) {
35        this.admin = admin;
36    }
37
38    @Autowired
39    public void setAdmin(Administrator admin) {
40        this.admin = admin;
41    }
42    */
43
44
45    public Administrator getAdmin() {
46        return admin;
47    }
48
49    public void setPcid(String pcid) {
50        this.pcid = pcid;
51    }
52
53    public void setPCBrand(String pcBrand) {
54        this.pcBrand = pcBrand;
55    }
56
57    public String getPcid() {
58        return pcid;
59    }
60
61    public String getPCBrand() {
62        return pcBrand;
63    }
64
65    public void typeOfPC() {
66        System.out.println("Its server PC!");
67    }
68
69    public void getAdminMessage() {
70        admin.adminMessage();
71    }
72
73    //Помечаем метод инициализации
74    //(как в xml init-method)
75    @PostConstruct
76    public String someInitializationsMethod() {
77        return "Some initializations";
78    }
79
80    //Помечаем метод, который выполняется при
81    //уничтожении бина (как в xml destroy-method)
82    @PreDestroy
83    public String someCleaningsMethod() {
84        return "Some clean up";
85    }
86}

Класс сервлета останеться без изменений.

Пример программы:

1import javax.servlet.*;
2import javax.servlet.http.*;
3import javax.servlet.ServletException;
4import javax.servlet.annotation.WebServlet;
5import java.io.*;
6import org.springframework.context.
7       support.ClassPathXmlApplicationContext;
8import com.someclasses.ServerPC;
9
10@WebServlet("/springservlet")
11public class SpringServlet extends HttpServlet{
12    protected void doGet(HttpServletRequest req,
13                         HttpServletResponse resp)
14            throws ServletException, IOException {
15        ClassPathXmlApplicationContext context =
16                new ClassPathXmlApplicationContext(
17                        "applicationContext.xml");
18
19        //Достаем бин из context
20        ServerPC serverpcSingleton =
21                context.getBean(
22                        "serverPCBean",ServerPC.class);
23
24        //используем бин
25        serverpcSingleton.setPCid("12353425");
26        resp.getWriter().write(serverpcSingleton.getPCid());
27
28    }
29}

Компилируем Java файлики с использованием jar файлов спринг:

Запускаем Tomcat и открываем страницу сервлета по пути /springservlet:

Как видим, бины были успешно созданы и мы ими успешно воспользовались.


Следующие уроки

Конфигурация Spring бинов с помощью java класса.

14
мин.

Similar Articles Icon
Divider

Создание веб-приложения в Eclipse IDE

20
мин.

Similar Articles Icon
Divider

Основы Spring MVC. Как работает DispatcherServlet

19
мин.

Similar Articles Icon