Spring 3. Как сконфигурировать первый проект?

Довольно таки много статей, где показывают примеры использования готовых структур таких как Spring MVC например, но в этом уроке я не буду вам показывать как реализовать структуру какого то паттерна, я покажу как сконфигурировать ваше первое Spring приложение.

Spring Framework является Java платформой, обеспечивающей полную поддержку совместной работы модулей Java приложений.

Spring Framework имеет довольно широкую функциональность и активно используется при разработке сложных бизнес-приложений.

Spring предоставляет в себе большой спектр frameworks:

    • IoC (Inversion of Control) контейнер — конфигурирование компонент приложений и управление жизненным циклом Java объектов.

    • AOP (аспектно-ориентированного программирования) — работает с функциональностью, которая не может быть реализована возможностями объектно-ориентированного программирования на Java без каких-либо потерь.

Это самые основные фреймфорки Spring помимо их есть много других…

Давайте начнем конфигурировать наше первое Spring приложение.

Шаг 1.

Начнем как всегда с создания проекта Maven, как это делать вы уже можете наблюдать в этих статьях (Maven. Часть 1 — Знакомство и настройка и Maven. Часть 2 – Dependency).

Создадим класс Main.java и напишем EnterPointer(точка входа) — метод main(String[] args):

public class Main {
    public static void main(String []args){
        LabRat rat = new LabRat("Hi!");
        rat.sayHi();
    }
}

И наша LabRat (подопытная крыса) которая говорит —  Hi!

package com.devcolibri.pack;

public class LabRat {
    private String text;
    private String name;

    public LabRat(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void sayHi(){
        System.out.println(text);
    }
}

В результате выполнения вы не увидите ничего нового, просто выведется «Hi!«, но как вы видите мы в ручную инициализируем нашу крысу:

LabRat rat = new LabRat("Hi!");

Шаг 2.

Давайте теперь переведем этот пример на Spring IoC.

IoCInversion of Control или еще иногда пишут Dependency Injection, по сути это одно и то же, это значит что процесс рождения объектов(инициализации) и их смерти будет управляться контейнером Spring.

 

Для того чтобы сделать поддержку IoC в нашем примере нужно создать файл config.xml (имя файла любое) в src\main\resources\config.xml и добавить туда следующее содержимое:

<?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="rat" class="com.devcolibri.pack.LabRat">
        <constructor-arg value="Hi!"/>
        <property name="name" value="Alice"/>
    </bean>
</beans>

С 1-й по 5-ю строчку находится стандартная xsd конфигурация, на неё особого внимания можете не обращать, на что стоит обратить особое внимание так это на строчку 7, где мы описываем наш объект LabRat говорим где он лежит и даем ему уникальный идентификатор.

После чего со строки 8 мы начинаем описывать с какими параметрами и значениями его оживить(инициализировать).

<constructor-arg value="Hi!" /> — тут мы говорим что в конструктор объекта LabRat передать текст «Hi!«;
<property name="name" value="Alice"/> — используется в том случае если у нас возникает потребность инициализировать атрибут объекта в момент его рождения но этот параметр не инициализируеться через конструктор, только в этом случае обязательным условием есть присутствие getter and setter (getName(), setName(String name)).

Шаг 3.

Теперь добавим необходимую зависимость в pom.xml на момент написание урока самая свежая версия Spring была Spring 3.2.2

<properties>
    <org.springframework.version>3.2.2.RELEASE</org.springframework.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>
</dependencies>

Шаг 4.

Теперь переделаем немного Main.java:

public class Main {

    public static void main(String []args){
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(new String[] {"config.xml"});
        LabRat rat = (LabRat) ac.getBean("rat");
        rat.sayHi();
        System.out.println(rat.getName());
    }

}

new ClassPathXmlApplicationContext(new String[] {"config.xml"}); — определяем конфигурационный файл;

LabRat rat = (LabRat) ac.getBean("rat"); — получаем наш объект уже с Spring IoC контейнера.

В результате получим то же поведение, что и в первом случае но уже мы не управляем жизнью объекта за нас это делает Spring IoC.

Урок создан: 04 апреля 2013 | Просмотров: 27521 | Автор: Александр Барчук | Правила перепечатки


Добавить комментарий

Добавить комментарий

Ваш e-mail не будет опубликован.

Комментарии:

  • 23 июня 2013 в 11:27

    Игорь

    Офигенные статьи

  • 10 января 2015 в 19:37

    Дефлоратор

    Ништяк!
    «Аффтар пешы есчо!»

  • 10 января 2015 в 19:40

    Дефлоратор

    Только не до конца понятно, зачем писать «new String[] {«config.xml»}» если можно просто «config.xml»? (стр 4 в Main’e) :)

    • 15 апреля 2015 в 14:37

      Андрей

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

      • 22 апреля 2017 в 13:38

        Aleksei Mironov

        Это просто один из вариантов, можно просто через запятую перечислить.

  • 05 мая 2016 в 00:43

    Anton

    Спасибо! хоть чуть-чуть проясняться началось

    • 08 декабря 2016 в 17:11

      Irene

      Совершенно согласна!

  • 22 апреля 2017 в 13:53

    Aleksei Mironov

    а как получается создать вторую LabRat ? получается мы можем создать только одну, другую с другим именем уже не сделать. Или все таки можно как то??!?!?!?