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

Раздел: Spring Framework

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

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

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

Last updated: 10 мая 2025 г.

Иногда удобнее бывает конфигурировать бины не с помощью XML, а с помощью Java кода. То есть теперь вместо applicationContext.xml у нас будет Java класс.

Для начала давайте поправим класс ServerPC. Вернем в него конструктор, так как он будет использован в новом конфигурационном файле.

Класс ServerPC:

1package com.someclasses;
2import org.springframework.stereotype.Component;
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.beans.factory.annotation.Qualifier;
5import org.springframework.beans.factory.annotation.Value;
6import org.springframework.context.annotation.Scope;
7import org.springframework.beans.factory.annotation.PostConstruct;
8import org.springframework.beans.factory.annotation.PreDestroy;
9
10@Component("serverPCBean")
11@Scope("singleton")
12public class ServerPC{
13    @Autowired
14    private Administrator admin;
15    @Value("${pcid}")
16    private String pcid;
17    @Value("Acer")
18    private String pcBrand;
19
20    ServerPC() {}
21
22    //Для начала давайте вернем конструктор, который
23    //внедряет зависимость в бин класса ServerPC.
24    //Он будет использоваться в Java классе конфигураций
25    //для внедрения зависимости админа в бин ServerPC.
26    public ServerPC(Administrator admin) {
27        this.admin = admin;
28    }
29
30    public Administrator getAdmin() {
31        return admin;
32    }
33
34    public void setPCid(String pcid) {
35        this.pcid = pcid;
36    }
37
38    public void setPCBrand(String pcBrand) {
39        this.pcBrand = pcBrand;
40    }
41
42    public String getPCid() {
43        return pcid;
44    }
45
46    public String getPCBrand() {
47        return pcBrand;
48    }
49
50    public void typeOfPC() {
51        System.out.println("Its server PC!");
52    }
53
54    public void getAdminMessage(){
55        admin.adminMessage();
56    }
57
58    @PostConstruct
59    public String someInicializationsMethod() {
60        return "Some inicializations";
61    }
62
63    @PreDestroy
64    public String someCleaningsMethod() {
65        return "Some clean up";
66    }
67}

Конфигурационный Java класс:

1import org.springframework.context.annotation.Configuration;
2import org.springframework.context.annotation.ComponentScan;
3import org.springframework.context.annotation.Bean;
4import org.springframework.context.annotation.PropertySource;
5import com.someclasses.Administrator;
6import com.someclasses.ServerPC;
7
8//Для этого помечаем класс
9//конфигураций аннотацией configuration
10@Configuration
11//@ComponentScan это то же самое что
12//<context:component-scan base-package="com.someclasses"/> в XML
13//для сканирования папки с классами с аннотациями.
14@ComponentScan("com.someclasses")
15//@PropertySource это то же самое что
16//<context:property-placeholder
17//location="classpath:pc.properties"/> в XML.
18//То есть указываем файл из которого можем извлекать
19//значения для внедрения их в поля бинов.
20@PropertySource("classpath:pc.properties")
21public class ConfigClass {
22    //теперь определим бины как в xml только java кодом.
23    //Аннотация @Bean определяет что нижний
24    //метод это определение бина.
25    @Bean
26    //имя метода то есть someUser – это id как в xml.
27    //Возвращаемое значение это класс на основе
28    //которого будет создаваться бин.
29    public Administrator admin(){
30        //Метод создает бин и возвращает его.
31        return new Administrator();
32        //BeanFactory когда будет читать этот файл вызовет
33        //этот метод, этот метод как видим создает и возвращает
34        //новый объект Administrator то есть бин и этот созданный
35        //бин будет хранится в объекте BeanFactory, который
36        //можно будет оттуда извлечь.
37    }
38
39    @Bean
40    public ServerPC serverPC(){
41        //Для внедрения бина Administrator в другой бин
42        //его нужно для начала создать.
43        //Для этого можно вызывать ранее
44        //определенный метод admin(), который возвращает
45        //бин класса Administrator и передать этот бин
46        //в конструктор нового бина класса ServerPC.
47        //Таким образом с помощью метода serverPC()
48        //BeanFactory создает новый бин класса ServerPC
49        //с внедренной зависимостью.
50        return new ServerPC(admin());
51    }
52}

Теперь создадим класс сервлета, в котором бины будут создаваться на основе конфигурационного Java класса.

1import javax.servlet.*;
2import javax.servlet.http.*;
3import javax.servlet.ServletException;
4import javax.servlet.annotation.WebServlet;
5import java.io.*;
6import org.springframework.context.annotation.AnnotationConfigApplicationContext;
7import com.someclasses.ServerPC;
8
9@WebServlet("/springservlet")
10public class SpringServlet extends HttpServlet{
11    protected void doGet(HttpServletRequest req,
12                         HttpServletResponse resp)
13            throws ServletException, IOException {
14        //Для создания объекта BeanFactory на основе
15        //Java конфигураций используется уже другая
16        //реализация BeanFactory.
17        //Теперь вместо ClassPathXmlApplicationContext
18        //будет объект AnnotationConfigApplicationContext.
19        AnnotationConfigApplicationContext context =
20                new AnnotationConfigApplicationContext(
21                        ConfigClass.class);
22
23        //Достаем бин serverPC, который мы определили
24        //в ConfigClass из context.
25        ServerPC serverpcSingleton =
26                context.getBean(
27                        "serverPC",ServerPC.class);
28        //используем бин
29        serverpcSingleton.setPCid("12353425");
30        resp.getWriter().write(serverpcSingleton.getPCid());
31    }
32}

Проверка работы приложения

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

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

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


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

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

20
мин.

Similar Articles Icon
Divider

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

19
мин.

Similar Articles Icon
Divider

Аннотация RequestMapping

17
мин.

Similar Articles Icon