Spring кратко - введение.

Я бы spring fraemwork назвал бы клеем, который позволяет создавать и удобно
связывать различные java модули и технологии(jdbc, struts, servlets, etc.).
Spring это модульная система в основе которого лежит основной его модуль
Spring core - к которому мы начинаем прикреплять необходимые кирпичики-модули,
ядро представляет собой IoC - контейнер, который позволяет нам "не жестко"
склеивать технологии, что в свою очередь позволяет сократить код и сделать
его интуитивно понятным. Давайте расмотрим все на примерах, начнем с HelloWorld.
Пусть у нас есть некий класс HelloWorld которому можно установить  свойство
name и метод который выводит Hello + name в консоль:

package org.vit;

public class HelloWorld {
// наше свойтво в котором будет содержатся имя
private String name;
// метод который устанавливает свойство name
public void setName(String name) {
   this.name = name;
}
 //метод который выводит на экран  "Hello " + имя содержащееся в поле name
 public void hello() {
   System.out.println("Hello " +name);
 }
}

напишем главный класс Main  который создает объект HelloWorld и устанавливает
в поле name имя Vit а затем выводит на консоль  фразу "Hello " +name:

package org.vit;

public class Main {
public static void main(String[] args) {
   HelloWorld helloWorld = new HelloWorld();
   helloWorld.setName("Vit");
   helloWorld.hello();
}
}

компилируем, запускаем и получаем результат:
Hello Vit

Предположим что у нас каждый день в программе нужно менять поле name. Для
этого нам потребутся каждый раз править код и пересобирать программу, но
есть выход воспользоваться технологией Spring и не жестко устанавливать
поле name. Давайте расмотрим простой пример HelloWorld использующий Spring.
Сlass HelloWorld останится таким же, изменится лишь class Main:

package org.vit;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main1 {
public static void main(String[] args) {
  // создаем ApplicationContext можно сказать ядро Spring'a
  ApplicationContext context =
  // загружаем конфигурационый файл beans.xml с  инструкциями по созданию наших
  // объектов
                     new ClassPathXmlApplicationContext("beans.xml");

  // запрашиваем наш объект класса HelloWorld который был сознан spring'om
  HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");

  //вызываем метод вывода на экран.
  helloWorld.hello();
  }
}

Расмотрим конфигурационный файл beans.xml(он должен лежать в CLASSPATH):


<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-2.5.xsd">
    <!-- просим создать spring нам объект класса org.vit.HelloWorld и
     сылатся на него в конфигурационном файле beans.xml можно по id -
     helloWorld, а так же запрашивать его из ApplicationContext в программе следующим
     образом HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");
    -->
    <bean id="helloWorld"
          class="org.vit.HelloWorld">
          <!--  устанавливаем наше поле name, соотвествует строчке кода
          helloWorld.setName("Mabel"); где name="name" - имя поля которое хотим
          установить и value="Mabel" - значение какое хотим поместить в
          наше поле -->
          <property name="name"
                    value="Mabel" />
    </bean>
</beans>

Откомпилируем и запустим проект, получим в консоли: Hello Mabel

Счас я уже легко могу без перекомпиляции кода менять на свое усмотрение
свойство name в конфигурационном файле на любое значение
<property name="name" value="Mabel Happy New Year" /> вот мы и получили
"не жесткое" связывание объектов, хочу напомнить что String в java является
объектом :) .
Хотелось бы сказать про атребут scope:

<bean id="helloWorld"
          class="org.vit.HelloWorld"
          scope="prototype" >

он отвечает за создание объектов при запросе из context:
HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");

singleton - способ по умолчанию, создается и используется только один объект(шаблон проектирования singleton в java)
prototype - каждый раз создает новый объект при каждом запросе. Я обещал показать что spring - позволяет сократить код - это я сделаю в следующей статье когда буду склеивать 2 технологии Struts 2 и доступ к БД
c помощью технологии spring.
Приятных всем выходных и Happy New Year!!!!

PS если кому интересно я использовал spring 2.5  список lib прилагаю тупо скопировал с web-application:

 commons-beanutils-1.7.0.jar
 commons-collections-3.2.jar
 commons-fileupload-1.2.1.jar
 commons-io-1.3.2.jar
 commons-logging-1.0.4.jar
 commons-validator-1.3.1.jar
 dom4j-1.6.1.jar
 freemarker-2.3.13.jar
 jaxen-1.1-beta-7.jar
 ognl-2.6.11.jar
 spring-beans.jar
 spring-context.jar
 spring-core.jar
 spring-web.jar
 struts2-core-2.1.6.jar
 struts2-spring-plugin-2.1.6.jar
 xerces-2.6.2.jar
 xml-apis.jar
 xwork-2.1.2.jar

 

ВложениеРазмер
spring1.zip7.11 кб

Эта статья гораздо понятнее,

Эта статья гораздо понятнее, спасибо, Vit! Ждем следующей статьи!
ЗЫ. С Новым Годом, коллеги ойтишнеги!

Отправить комментарий

КАПЧА
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Enter the characters (without spaces) shown in the image.