Топ-100Внедрение зависимостей с помощью сеттера. - CodOrbits
LogoCodOrbits

Раздел: Spring Framework

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

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

Внедрение зависимостей с помощью сеттера.

Last updated: 10 мая 2025 г.

Помним, что в прошлом уроке внедрение админа в ПК происходило с помощью конструктора в классе ПК.

Но внедрять также можно с помощью сеттера

Класс ServerPC:

1package com.someclasses;
2
3public class ServerPC{
4    private Administrator admin;
5    private String pcid;
6    private String pcBrand;
7
8    ServerPC() {}
9
10    ServerPC(Administrator admin) {
11        this.admin = admin;
12    }
13
14    //Теперь внедрение будет происходить
15    //с помощью этого сеттера.
16    public void setAdmin(Administrator admin){
17        this.admin = admin;
18    }
19
20    public Administrator getAdmin() {
21        return admin;
22    }
23
24    public void setPcid(String pcid) {
25        this.pcid = pcid;
26    }
27
28    public void setPCBrand(String pcBrand) {
29        this.pcBrand = pcBrand;
30    }
31
32    public String getPCid() {
33        return pcid;
34    }
35
36    public String getPCBrand() {
37        return pcBrand;
38    }
39
40    public String getAdminMessage(){
41        return admin.adminMessage();
42    }
43}

Теперь давайте в конфигурациях определим новый бин Серверного ПК, в который внедрять бин админа будем уже с помощью сеттера класса серверного ПК.

applicationContext.xml:

1<?xml version="1.0" encoding="UTF-8"?>
2<beans xmlns="http://www.springframework.org/schema/beans"
3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4xmlns:context="http://www.springframework.org/schema/context"
5xsi:schemaLocation="http://www.springframework.org/schema/beans
6http://www.springframework.org/schema/beans/spring-beans.xsd
7http://www.springframework.org/schema/context
8http://www.springframework.org/schema/context/spring-context-3.0.xsd">
9
10<bean id="someAdminBean" class="com.someclasses.Administrator">
11</bean>
12
13<bean id="serverPCBean" class="com.someclasses.ServerPC">
14<constructor-arg ref="someAdminBean"/>
15</bean>
16
17<bean id="serverPCBeanSetter" class="com.someclasses.ServerPC">
18<!-- внедряем зависимость someAdminBean
19через сеттер с помощью тега property.
20Помним что в классе ServerPC мы определили
21вот такой сеттер setAdmin(Administrator admin).
22Здесь в теге property в name указывается название
23этого сеттера только без set в начале
24и с маленькой буквы это важно.
25Для внедрения Спринг будет искать в классе ServerPC
26метод, который начинается с set и заканчивается на Admin.-->
27<property name="admin" ref="someAdminBean"/>
28</bean>
29
30<!-- Можно через сеттер внедрить значение
31(оно указывается в атрибуте value) в любое другое
32поле класса ServerPC.
33Помним что в классе ServerPC мы определили еще два
34строковых поля и написали сеттеры для них.
35Внедрение происходит таким же образом
36как и для admin как описано выше.-->
37<property name="pcBrand" value="Acer"/>
38<property name="pcId" value="pc123424"/>
39</bean>
40
41</beans>

Создание и получение бинов в Java программе.

Давайте же теперь в классе сервлета извлечем сконфигурированный бин и проверим внедрился ли в него бин админа с помощью сеттера.

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

1import javax.servlet.*;
2import javax.servlet.http.*;
3import javax.servlet.ServletException;
4import javax.servlet.annotation.WebServlet;
5import java.io.*;
6import org.springframework.context.support.ClassPathXmlApplicationContext;
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        ClassPathXmlApplicationContext context = 
15            new ClassPathXmlApplicationContext(
16                "applicationContext.xml");
17        //Теперь извлечем новый бин serverPCBeanSetter
18        ServerPC serverpc = 
19            context.getBean("serverPCBeanSetter",ServerPC.class);
20        resp.getWriter().write(serverpc.getAdminMessage());
21    }
22}

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

Теперь проверим скажет ли администратор “I’m an administrator!”.

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

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

Как видим сказал. То есть объект админа был успешно внедрен в объект ПК с помощью сеттера.


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

Внедрение значений из внешнего файла в поля бина.

18
мин.

Similar Articles Icon
Divider

Области видимости бинов (Spring Scopes)

16
мин.

Similar Articles Icon
Divider

Жизненный цикл Spring-бина

18
мин.

Similar Articles Icon