Что такое Spring Bean, Spring Container? IoC (inversion of control) | Создание простого Spring проекта и конфигурациия Spring Container в XML файле | Редактор IntelliJ Idea и язык Java
последнее обновление: 7 апреля 2025
Обычный объект я создаю так:
Java
Book book = new Book();
Что такое Spring Bean?
Spring Bean это обычный объект, который создаётся не мной, а объект создает Spring Container .
Java
// Spring Container создает bean .
ApplicationContext context = new ClassPathXmlApplicationContext("MyConfig.xml" ); // создаем Spring Container из конфигурационного файла
Book book = (Book) context.getBean("myBook1" ); // Spring Container создает объект книгу по id
Spring Container знает как создать мой объект(Bean ) потому что все описано в конфигурационном файле:
<?xml version="1.0" encoding="UTF-8" ?>
<beans>
<bean id="myBook1" class="com.example.springproj1.Book" >
</bean>
</beans>
На заметку! Зачем зачем использовать Spring для создания объекта если можно одной строчкой создать мой объект:
Book book = new Book();
Ответ: Потому что хороший стиль описывать все объекты в одном конфигурационном файле xml .
Что такое Spring Container?
Spring Container отвечает за создание Bean (моего объекта).
Spring Container выполняет 2 функции: IoC и DI
IoC - инверсия управления (создание и управление объектами происходит не вами. Библиотека
Spring сама создает и управляет объектами)
Интерфейс
org.springframework.context.ApplicationContext представляет
IoC Spring Container и отвечает за создание, настройку
Bean потому что наследуется от интерфейса
BeanFactory .
ApplicationContext (IoC Spring Container) знает как объекты создавать, но нужно сделать конфигурацию.
Сделать конфигурацию для
IoC Spring Container можно используя:
1) XML file (использую в моем примере ниже)
Класс
ClassPathXmlApplicationContext это реализация интерфейса
ApplicationContext .
Класс
ClassPathXmlApplicationContext берет конфигурацию из
XML файла.
2) Аннотации в
Java : @Service, @Component, @Scope
3)
Java code: @Configuration, @ComponentScan, @Bean
@Configuration указывает класс конфигурации.
@Bean указать метод, который создает бин.
Конфигурация для
IoC Spring Container это объяснение для
IoC Spring Container как создавать
bean объекты.
Тот, кто контролирует все ваши классы и может управлять ими называется
ApplicationContext (IoC Spring Container)
DI - Dependency Injection (используется для создания сложных объектов)
На заметку! В моем примере ниже я не использую Dependency Injection . Потому что у меня в примере только один класс.
А для Dependency Injection нужно два класса которые зависят друг от друга
DI Spring это когда классу нужен другой класс ...
Создаю простой Spring проект и конфигурациию Spring Bean в XML файле | Редактор IntelliJ Idea и язык Java
Скачать пример:
На заметку! У вас должна быть установлена Java JDK . Если у вас ее нет то нужно скачать и установить Java JDK ...
На заметку! У вас должна быть установлена IntelliJ IDEA Ultimate . Если у вас ее нет то нужно скачать и установить IntelliJ IDEA ...
Шаг 1. Cоздаем новый проект с типом Spring Boot
Выбираем Spring Boots :
Так как у нас простой проект, то галочки не ставим:
Проект создался:
Шаг 2. Создаем новый Book.java файл
Нажимаем правой клавишей мыши на папку моего пакета и создаем новый java файл
Напишем название Book
И выберем тип Class
Нажмем кнопку ввод
Файл создался.
Внутри файла Book.java добавим код:
package com.example.springproj1;
public class Book {
public String name;
public Book()
{
name = "Tom Sawyer" ;
}
}
Шаг 3. Создаем новый конфигурационный MyConfig.xml файл
Нажимаем правой клавишей мыши на папку resources и создаем новый Spring Config файл
Напишем название MyConfig
Нажмем кнопку ввод
Файл создался.
Внутри файла MyConfig.xml добавим bean описание:
Spring из xml файла читает bean описание и знает на будующее как создавать bean объект.
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" >
<bean id="myBook1" class="com.example.springproj1.Book" >
</bean>
</beans>
Шаг 4. Добавим код в SpringProj1Application.java файл
// Spring Container создает bean .
ApplicationContext context = new ClassPathXmlApplicationContext("MyConfig.xml" ); // создаем Spring Container из конфигурационного файла
Book book = (Book) context.getBean("myBook1" ); // Spring Container создает объект книгу по id
// показываем на экране результат
System.out.println("See what book created: " + book.name); // выводим на экран имя книги
На заметку!
// Вариант 1
Book book = (Book) context.getBean("myBook1" );
// а можно так
// Вариант 2
Book book = context.getBean("myBook1" , Book.class);
Шаг 5. Запускаем проект
Чтобы запустить проект надо чтобы был открыт application java файл и нажимаем на зеленый треугольник:
После запуска программы на экране увидим результат:
See what book created: Tom Sawyer