Я бы 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.zip | 7.11 кб |




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