Внедрение значений из внешнего файла в поля Spring бина.
Last updated: 10 мая 2025 г.Внедрять значения в поля бина можно не напрямую, а из внешнего файла. Давайте же создадим такой файл, в котором будут харнится данные в формате имя-значение
. По имени мы сможем извлечь значение из этого файла для использования его в конф файле. Пусть пока в нем будет всего одно значение с именем pcid
.
Пусть этот файл будет называться pc.propreties и пока пусть находиться в той же папке, что и applicationContext.xml и класс сервлета.
Файл со значениями:

Внедрение значений из внешнего файла в поля бина.
Давайте же теперь внедрим строковое значение в поле pcid
бина класса ServerPC но уже не напрямую, а из созданного нами ранее файла.
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<!-- если хотим импортировать какие-то значения из другого файла
11импортируем их так (указываем файл содержащий их. у нас pc.properties)-->
12<context:property-placeholder location="classpath:pc.properties"/>
13
14<bean id="someAdminBean" class="com.someclasses.Administrator">
15</bean>
16
17<bean id="serverPCBean" class="com.someclasses.ServerPC">
18<constructor-arg ref="someAdminBean"/>
19</bean>
20
21<bean id="serverPCBeanSetter" class="com.someclasses.ServerPC">
22<property name="admin" ref="someAdminBean"/>
23<property name="PCBrand" value="Acer"/>
24<!-- Можно внедрить значение из другого файла:
25${имя значения указанного в файле}-->
26<property name="PCid" value="${pcid}"/>
27</bean>c
28
29</beans>
Внедрение значений из внешнего файла в поля бина.
Давайте же теперь в классе сервлета извлечем сконфигурированный бин и проверим внедрилось ли в его поле строковое значение из файла.
Пример программы:
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.getPCid());
21 }
22}
Проверка работы приложения
Теперь проверим содержимое поля pcid
созданного бина.
Компилируем Java файлики. Файл сервлета при этом компилируем с использованием jar файлов спринг:

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

Как видим, значение из файла внедрилось в поле бина успешно.
Следующие уроки
Области видимости бинов (Spring Scopes)
16
мин.
Жизненный цикл Spring-бина
18
мин.
Конфигурация Spring бинов с помощью аннотаций
20
мин.