1 Основные особенности пружины
Пружина - очень активная структура с открытым исходным кодом; Это структура, которая создает многослойные системы Javaee на основе Core, и ее основная цель-упростить разработку предприятий.
Spring управляет вашим кодом неинвазивным образом. Пружина выступает за «минимальное вторжение», что означает, что вы можете установить или удалить пружину в подходящее время, а пружина делает Java ярким. (Принцип открытого и закрытия), вот принцип закрытия.
2. Инструменты, необходимые для разработки пружины
(Здесь мы сначала выбираем пружину 2.5, а затем 3.0)
2.1 Пакет Prings Jar
Загрузите Spring на http://www.springsource.org/download, затем распаковывается, найдите следующий файл JAR в каталоге декомпрессии и скопируйте его в Classpath
― Библиотека весны Core Class - это Dist/Spring.jar в разделе Dist in Spring Document
― Всесенная библиотека-все это весенний документ под руководством Lib, Lib/Jakarta-Commons/Commons-Logging.jar
― Если используется аспектное программирование (AOP), следующие файлы JAR Lib/AspectJ/AspizeJweaver.jar и AspectJrt.jarlib/cglib/cglib-nodep-2.1_3.jar также требуются
―ВЫЙ, если вы используете аннотации в JSR-2550, такие как@resource/@postconstruct/@predestroy, следующий файл JAR lib/j2ee/common-annotation.jar также требуется
ПРИМЕЧАНИЕ. JSR (запрос спецификации Java) относится к официальному запросу для добавления стандартизированной технической спецификации в JCP (процесс сообщества Java). Любой может отправить JSR (запрос на спецификацию Java), чтобы добавить новые API и услуги на платформу Java. JSR стал важным стандартом в мире Java
2.2 Файл конфигурации пружины
По умолчанию это файл ApplicationContext.xml. Многие XML -файлы могут быть созданы, и это обычно настроено в проектах. (Создан в каталоге SRC)
3 Подробное объяснение основных функций пружины
3.1 Springioc
Инверсия управления пружиной: передайте создание, инициализацию, разрушение и другие задачи объектов в пружинный контейнер. Контролирует жизненный цикл объекта с помощью пружинного контейнера.
шаг:
• а. Запустите пружинный контейнер
1. Найдите файлы конфигурации в группе класса, чтобы создать контейнер
Кода кода следующим образом: ApplicationContext ctx = new classpathxmlapplicationcontext (new String [] {"ApplicationContext.xml"});
Вы можете искать XML -файлы во всей панели Classpath
* Загрузите таким образом. Вам необходимо поместить файл конфигурации пружины под путь ClassPath текущего проекта
* Путь ClassPath относится к каталогу SRC текущего проекта, который является местом хранения исходного файла Java.
2. Найти файлы конфигурации в пути файловой системы, чтобы создать контейнер
Файл конфигурации пружины может указывать несколько файлов конфигурации и может быть передано через строковые массивы.
Примечание. Используйте первый метод для запуска контейнера.
• б. Извлекать объекты из пружинного контейнера
Структура контейнера пружины:
3.2 псевдоним
<Beans> <псевдоним name = "person" alias = "p" /// псевдоним - это псевдоним, вы можете провести человек через с. <bean name = "person"/> </beans>
С такой конфигурацией может быть достигнуто влияние именования в одном месте и использования разных имен в нескольких местах.
3.3 Внутренние объекты контейнера пружины
1 Как создать объект
1.1 Нет конструктора параметров
<bean id = "helloworld"> </bean>
1.2 Статический фабричный метод
<bean id = "helloworld2"
Factory-method = "GetInstance"> </bean>
1.3 Пример фабричного метода
<bean id = "helloworldfactory"> </bean>
<bean id = "helloworld3" factory-bean = "helloworldfactory" factory-method = "getInstance"> </bean>
Просто помните концепцию. Первый метод является наиболее используемым, но при интеграции с другими инструментами используется заводская модель экземпляра.
Пример :
Настройка ApplicationContext.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-2.5.xsd"> <!-Поместите класс в пружинный контейнер, класс, называемый класс. -> <bean id = "helloWorld"> </bean> <! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Factory-method = "GetInstance" > </bean> <! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Создать класс Entity Helloworld
пакет com.itheima10.spring.createobject; public class helloworld {public void hello () {System.out.println ("hello"); }}Установить статическую фабрику HelloworldFactory
пакет com.itheima10.spring.createobject.method; открытый класс helloworldfactory {public static helloworld getInstance () {System.out.println ("Статический метод"); вернуть новый Helloworld (); }}Установить физическую фабрику HelloWorldFactory2
пакет com.itheima10.spring.createobject.method; открытый класс helloworldfactory2 { / *** Заводский объект должен быть создан до того, как метод может быть назван* @return* / public helloworld getInstance () {return new Helloworld (); }}Метод записи тестирования createObjectMethodTest
пакет com.itheima10.spring.createobject.method; import org.junit.test; import org.springframework.context.applicationcontext; импорт org.springframework.context.support.classpathxmlapplication context;/** * В разделе «Второе и треть CreateObjectMethodTest { / *** По умолчанию контейнер Spring вызывает конструктор по умолчанию класса для создания объекта* / @Test public void testCreateObject_default () {ApplicationContext context = new ClassPathxMlApplicationContext ("applicateContext.xml"); Helloworld helloworld = (helloworld) context.getbean ("helloworld"); helloworld.hello (); }/*** Создать объект с использованием статической фабрики* <bean id = "helloworld2" factory-method = "getInstance"> </bean> Что делает пружинный контейнер: метод getInstance называется с использованием Helloworldfactor ClassPathxMlapplicationContext ("ApplicationContext.xml"); Helloworld helloworld = (helloworld) context.getbean ("helloworld2"); helloworld.hello (); }/** * Фабричный метод экземпляра создает объект * <bean id = "helloworldfactory" *> </bean> * <bean id = "helloworld3" factory-bean = "helloworldfactory" Factory-method = "GetInstance"> </bean> Что делать в пределах контейнера «Создать hellowlfactory». Object*/ @test public void testcreateObject_instancefactory () {ApplicationContext context = new ClassPathxMlapplicationContext ("ApplicationContext.xml"); Helloworld helloworld = (helloworld) context.getbean ("helloworld3"); helloworld.hello (); }}2 Область объекта
Объем объекта имеет два свойства: Синглтон и прототип. Синглтон означает Синглтон
2.1 Singleton (значение по умолчанию)
В каждой пружине контейнер IOC есть только один экземпляр объекта (общий).
2.2 Прототип
Позволяя создать экземпляры бобов несколько раз (создайте один экземпляр, один раз используется). Весна не может нести ответственность за весь жизненный цикл прототипа бобов. Это означает, что клиент несет ответственность за то, чтобы понять объекты с примером прототипа и освободить дорогие ресурсы, удерживаемые любыми прототипом бобами.
<bean id = "helloworld" scope = "singleton"> </bean>
<bean id = "helloworld" scope = "prototype"> </bean>
Создать класс Helloworld
открытый класс helloworld {public list <string> lists = new ArrayList <string> (); public helloworld () {System.out.println ("новый экземпляр"); } public void hello () {System.out.println ("hello"); }}Создайте тестовый класс Scopetest
Пакет com.itheima10.spring.scope; import org.junit.test; import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationContext; public class scopetest { /** Поместите Beanle Контейнер и этот класс является синглтоном, тогда свойства в классе станут общими*/ @test public void testcreateObject_scope_default () {ApplicationContext = new ClassPathxMlApplicationContext ("ApplicationContext.xml"); Helloworld hello1 = (helloworld) context.getbean ("helloworld"); hello1.lists.add ("aaaa"); hello2 = (helloworld) context.getbean ("helloworld"); hello2.lists.add ("bbbb"); System.out.println (helloworld.lists.size ()); //2, and only output new instance } /** * If spring's configuration file is as follows: * <bean id="helloWorld" scope="prototype"></bean> Then the spring container will create multiple objects for */ @Test public void testCreateObject_Scope_Prototype(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Helloworld hello1 = (helloworld) context.getbean ("helloworld"); hello1.lists.add ("aaaa"); hello2 = (helloworld) context.getbean ("helloworld"); hello2.lists.add ("bbbb"); System.out.println (helloworld.lists.size ()); // 1, и только вывод нового экземпляра}}3 Время инициализации
Ленивая загрузка - по умолчанию бобы будут инициализированы при запуске контейнера, но мы можем указать Lazy -init = "true" узла бобов, чтобы отложить инициализацию бобов. В настоящее время фасоль будет инициализироваться только в том случае, если боб будет извлечен впервые. нравиться:
<bean id = "xxx" lazy-init = "true"/>
Если вы хотите применить отсроченную инициализацию ко всем бобам, вы можете установить по умолчанию-lazy-init = "true" в корневых бобах следующим образом:
<бобы по умолчанию-lazy-init = "true" ...>
Весна создает все синглтонские бобы заранее в стартапе по умолчанию. Ранняя инстанция означает, что в рамках инициализации ApplicationContext автоматически создает и настраивает все синглтонские бобы. Обычно это хорошая вещь. Потому что таким образом любые ошибки в конфигурации могут быть обнаружены немедленно.
Lazy-init ложно, пружинный контейнер сообщит об ошибке, когда она запускается (лучший способ)
Lazy-Init верно, и пружинный контейнер допустит ошибку при вызове класса.
Настройка ApplicationContext.xml
<bean id = "helloworld" scope = "prototype"> </bean> </beans>
Создать тестовый класс createObjectwhentest
пакет com.itheima10.spring.createobject.when; import org.junit.test; import org.springframework.context.applicationcontext; импорт org.springframework.context.support.classpathxmlapplication context; public createbjectwhentest. Объект* 3. Метод вызова объекта** <bean id = "helloWorld"> </bean> <bean id = "helloworld2"> </bean>, поскольку в контейнере для пружины объявляются два боба, для создания двух объектов: если Struts2, Hibernate, и пружинные контейнеры будут интегрированы, если ошибки, когда будет запущена, будет установлена ошибки, когда будет запутана ошибка, когда будет запущена ошибка. показаться особенно рано. Если фасоль хранит большой объем данных, этот метод не очень хороший, и данные могут застрять в памяти слишком рано. Если фасоль не является одиночным, независимо от того, как он настроен, объект должен быть создан, когда это контекст. Getbean*/ @test public void testcreateObject_when_default () {ApplicationContext Context = new ClassPathxmlApplicationContext ("applicationContext.xml"); context.getbean ("helloworld"); } /*** <bean id = "helloWorld" lazy-init = "true"> < /bean>* Заказ* 1. Запустите контейнер пружины* 2. context.getbean* 3. Вызовите функцию конструктора, чтобы создать объект* Описание: Если на сцеплениях2, сгибание, контейнеры пружины интегрируются, если возникает ошибка в файл конфигурации пружины, будет сообщается о ошибке, когда будет сообщена bean. Если фасоль хранит большой объем данных, необходимо загружать данные при необходимости*/ @test public void testcreateObject_when_lazy () {ApplicationContext context = new ClassPathXmlApplicationContext ("ApplicationContext.xml"); context.getbean ("helloworld"); }}4 init, Методы уничтожения
Когда пружина инициализирует бобы или разрушает бобы, иногда требуется некоторая обработка, поэтому пружина может вызвать два метода жизненного цикла бобов при создании и разборке бобов. Вы можете указать метод для работы.
<bean id = "foo" class = "... foo" init-method = "setup" method = "teardown"/>
Вызовите метод init-method, когда Foo загружается в пружинный контейнер. Вызов развертывания-метод, когда Foo удаляется из контейнера (Scope = Singleton Valid)
Написание Helloworld
открытый класс helloworld {public helloworld () {System.out.println ("новый экземпляр"); } public void init () {System.out.println ("init"); } public void destress () {System.out.println ("Drester"); } public void hello () {System.out.println ("hello"); }}Напишите тестовый класс initDestroyTest
Пакет com.itheima10.spring.ioc.initdestroy; import org.junit.test; import org.springframework.context.applicationContext; импорт org.springframework.context.support.classpathxmlapplication context; public class initdestroxtest. Контейнер* 2. Создать объект Helloworld* 3. Выполнить метод инициирования* Автоматическое выполнение в пружинном контейнере* 4. Метод вызова объекта* 5. Метод уничтожения может быть выполнен только тогда, когда контейнер для пружины закрыт: боб - это синглтон* Этот метод также называется внутренним контейнером для пружинного контейнера* Описание:* Если фасоль не является синглтоном, пружинный контейнер не является ответственным за компенсирование объекта. * В пружинном контейнере, только если один боб является синглтоном, пружинный контейнер отвечает за создание, инициализация и разрушение объектов* Если боб не является синглтоном, контейнер пружины отвечает только за создание и инициализацию*/ @test public void testinitdestroy () {ApplicationContext = new ClassPathxmlApplicationContextextextextextextory () {ApplicationContext = new ClassPathxmlApplicationContextextextextextory (). Helloworld helloworld = (helloworld) context.getbean ("helloworld"); helloworld.hello (); ClassPathxMlapplicationContext ApplicationContext = (classPathXmlapplicationContext) контекст; ApplicationContext.Close (); }} Схема последовательности выполнения:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.