dir.by  
Программирование, разработка, тестирование
Java
Spring в Java (Spring Framework, Spring Data, Spring Boot, ...)
Что такое Spring Bean? Что такое Spring Container? IoC (inversion of control) | Создание простого Spring проекта и конфигурациия Spring Container в XML файле | Редактор IntelliJ Idea и язык Java
  Посмотрели 3614 раз(а)       Комментариев 5  
 Последний комментарий: (4 февраля 2025 10:38) Спасибо, вы правы есть ошибка в [java_code]Book book =... читать...       написать комментарий...
 Что такое 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
Скачать пример:
SpringProj1.zip ...
размер: 20 kb
 
На заметку! У вас должна быть установлена 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
 
← Предыдущая тема
Что такое Spring? Зачем в Java использовать Spring?
 
Следующая тема →
Что такое Dependency Injection в Spring? Создание простого Spring проекта с Dependency Injection в конструкторе с атрибутами @Component, @Autowired | Редактор IntelliJ Idea и язык Java
 
Ваши Отзывы ... 2 комментариев
гость
17 января 2025 12:13
СПАСИБО!!!!!

Я 3 раза пытался понять эту базу с разных источников, только Ваша статья помогла.
admin (17 января 2025 17:21) Спасибо :) ответить
Donkey
3 февраля 2025 21:30
спасибо большое за статью, продолжаю читать и практиваться по ней.

Donkey (3 февраля 2025 21:59) // Вариант 2
Book book = context.getBean("myBook1", class.Book);
Не ялвяется ли это ошибкой?
ответить
admin (4 февраля 2025 10:38) Спасибо, вы правы есть ошибка в
  Java  
Book book = context.getBean("myBook1", class.Book Book.class);

исправил
ответить
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Экскурсии по Москве Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
  Объявления  
  Объявления  
 
Скачать и установить
Установка JDK (скачиваем и устанавливаем библиотеку Java для Windows)
Скачать и установить IntelliJ IDEA для изучения Java, Spring, Jakarta EE | Функциональность и отличия: Community | Ultimate
Изучаем язык Java (class, interface, свойства и т.д.)
Создание простого консольного приложения в IntelliJ IDEA для изучения Java
Что такое interface в Java ?
Прямо в коде (во время выполнения) делаем имплементацию для interface | Java
Потоки в Java
lambda это безымянный метод (нет имени и не принадлежит классу) | Java
Исключения и обработка в Java. Пример: try {...} catch (Exception e) {...}
Зачем использовать throws Exception в названии функциии в Java ? Ответ: метод создает исключение и нет обработки try catch. Пример: float CalculateDensity(float mass, float volume) throws Exception { ... throw new Exception("Error! Volume is zero."); ... }
Java web приложение (сервлет, jsp страница, основная функциональность и без фрэймворков)
Создаем новое простое web приложение (jsp web страница) | Java, Maven
Создаем web сервлет (сервлет находится на веб-сервере, по запросу возвращает результат) | Java
Установка Tomcat web server (скачиваем и устанавливаем для Windows)
Проверяем, тестируем Tomcat web server (создаем новый my.hml файл)
Что такое Maven
Что такое динамическая web страница jsp (Java Server Page) ?
Как инсталировать Smart Tomcat plugin в Intellij Idea
Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java
Spring в Java (Spring Framework, Spring Data, Spring Boot, ...)
Что такое Spring? Зачем в Java использовать Spring?
Что такое Spring Bean? Что такое Spring Container? IoC (inversion of control) | Создание простого Spring проекта и конфигурациия Spring Container в XML файле | Редактор IntelliJ Idea и язык Java
Что такое Dependency Injection в Spring? Создание простого Spring проекта с Dependency Injection в конструкторе с атрибутами @Component, @Autowired | Редактор IntelliJ Idea и язык Java
Создаем новое Spring Web приложение (запрос идет в Controller → Controller создает ответ как текст или json) | Java, Spring Web, Spring Boot, Maven
Создаем новое Spring WebSocket приложение (Java WebSocket шлет сообщение к JavaScript WebSocket) | Java, Spring WebSocket, Spring Boot, Maven
Создаем Azure Web App с типом Java (бесплатно). То есть создаем пустой web server
Java Spring web приложение кладем в Azure
К приложению Azure Web App (Java) соединяемся через FTP | используем File Explorer
Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java, Spring Boot
Как инсталировать Spring WebSocket plugin в Intellij Idea
Jakarta EE / Java EE в Java (web приложения, web сервисы)
Что такое Jakarta EE (Java EE) ? | В каком редакторе (программе) удобно писать Jakarta EE (Java EE) код?
Создание простого web-проекта в IntelliJ Idea Ultimate | Jakarta EE (Java EE)
Struts на Java (расширяет API Java Servlet используя MVC)
Что такое Struts | Java
Собеседования на Java

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика