2015-03-05 2 views
4

Я занимаюсь сертификацией Spring Core, и у меня есть следующие сомнения по этому вопросу:Как создается весенний контейнер?

Что подразумевается под «контейнером» и как его создать?

Я знаю, что весенний контейнер лежит в основе Spring Framework. Контейнер будет создавать объекты, связывать их вместе, настраивать их и управлять их полным жизненным циклом от создания до уничтожения. Контейнер Spring использует инъекцию зависимостей (DI) для управления компонентами, составляющими приложение. Эти объекты называются Spring Beans, которые мы обсудим в следующей главе.

И я знаю, что существуют 2 контейнера:

  • Spring BeanFactory Контейнер: Это самый простой контейнер обеспечивая базовую поддержку DI и определяется org.springframework.beans.factory.BeanFactory интерфейсом. BeanFactory и связанные с ним интерфейсы, такие как BeanFactoryAware, InitializingBean, DisposableBean, все еще присутствуют весной в целях обратной совместимости с большим количеством сторонних фреймворков, которые интегрируются с Spring.

  • Spring ApplicationContext Container: этот контейнер добавляет больше функциональных возможностей для предприятия, таких как возможность разрешать текстовые сообщения из файла свойств и возможность публиковать события приложений для заинтересованных слушателей событий. Этот контейнер определяется интерфейсом org.springframework.context.ApplicationContext.

Хорошо ... это довольно ясно для меня, но то, что это правильный ответ о Как создать контейнер?

Я думаю, что он автоматически создается весной, когда он читает класс конфигурации или файл конфигурации XML.

Или нет? Что мне не хватает?

+0

'новый AnnotationConfigApplicationContext()' –

ответ

5

Короче говоря, «Контейнер» представляет собой экземпляр Spring, отвечающий за управление lyfecycle ваших бобах.

Чтобы создать один, в основном, вы должны сделать что-то вроде

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/application-context.xml"); 

Помните заменив /application-context.xml файлом, где вы определяете свои собственные пружинные бобы.

Посмотрите на http://www.springbyexample.org/examples/intro-to-ioc-creating-a-spring-application.html

Вы можете также заменить XML-классом конфигурации. В этом случае вы должны иметь что-то вроде этого:

@Configuration 
public class Myconfig{ 

    @Bean 
    public MyBean myBean(){ 
     return new MyBean(); 
    } 
} 

Для этого, взгляните на http://www.tutorialspoint.com/spring/spring_java_based_configuration.htm

+0

нормально ... это если я использую конфигурацию XML, но если он используется в классе конфигурации Java? или аннотациями? – AndreaNobili

+4

@AndreaNobili всегда есть что-то, что в конечном итоге создаст экземпляр «XXXApplicationContext» (аннотация для Java-конфигурации).Это может быть вы (как @Andres), это может быть контейнер сервлетов (с помощью прослушивателя webpp или сервлета на основе Spring), это может быть инфраструктура (это делает Apache CXF), но в конце что-то создаст соответствующий экземпляр 'ApplicationContext' – GPI

+0

@Andres Что о приложении Spring MVC, где вы не используете ApplicationContext, но используете диспетчерский сервлет. Когда контейнер создается в этом случае? –

Смежные вопросы