Что такое контейнер в каркасе весны? - PullRequest
22 голосов
/ 03 января 2012
  1. Я просматривал эту статью http://www.vaannila.com/spring/spring-ioc-1.html и здесь термин контейнер используется. Диаграмма ниже показывает контейнер. Что такое Контейнер в этой статье? Это кусок code или боб config файл?

  2. Может ли Spring IOC использоваться в Spring MVC?

Ответы [ 4 ]

23 голосов
/ 03 января 2012

В этом контексте контейнер имеет значение чего-то, что обеспечивает инфраструктуру, необходимую некоторым компонентам для жизни.

Вы можете представить это так:

  • Как JVM является контейнером для запуска программ Java,
  • Контейнер сервлетов (то есть Tomcat) - это то, что запускает сервлеты
  • EJB-контейнер - это среда, в которой живет EJB (см. Эту википедию статья (на немецком языке, но вы можете использовать переводчик браузера))

Точно так же Spring - это контейнер, в котором живут Spring Beans.

17 голосов
/ 03 января 2012

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

Согласно документации Spring здесь

Интерфейс BeanFactory является центральным интерфейсом контейнера IoC в Spring.В его обязанности
входит создание экземпляров или источников объектов приложения, настройка таких объектов и сборка зависимостей между этими объектами.

IOC - основной принцип, который Spring использует для концепции разделения интересов.Независимо от того, что вы используете - интеграции Spring MVC, Security, Core, DAO, вы будете использовать принцип IOC.

6 голосов
/ 03 января 2012

Контейнер - это фрагмент кода, который читает файл конфигурации бина и выполняет соответствующие действия.

Да IOC может использоваться с MVC.Вот статья об этом. пружинный мвк

2 голосов
/ 16 октября 2017

Позвольте мне объяснить, что такое контейнер Spring. Предположим, у вас есть Java-приложение с одним классом с именем Student и с одним переменным именем student. здесь мы идем

public class Student{
 private String name;
 public void setName(String name){
      this.name  = name;
 public void getName(){
      System.out.println("Your Name : " + name);}}

Теперь вы хотите, чтобы переменная имени автоматически инициализировалась в iqbal при запуске приложения, и объект ученика должен быть доступен внутри основного класса.

  • напишите файл конфигурации xml, в котором вы определите этот объект Student.

<?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-3.0.xsd">

   <bean id = "Student" class = "com.packagename.Student">
      <property name = "name" value = "iqbal"/>
   </bean>

</beans>

Теперь внутри основного класса у нас есть ApplicationContext

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
      Studentobj = (Student) context.getBean("student");
      obj.getMessage();
   }
}

ТАК, пожалуйста, обратите внимание, здесь ApplicationContext, он будет действовать как контейнер и будет создавать и управлять классом Student для вашего приложения.

...