spring учебник
Начало работы с весной
Поиск…
замечания
Spring Framework - это платформа приложений с открытым исходным кодом и инверсия контейнера управления для платформы Java.
Версии
Версия | Дата выхода |
---|---|
4.3.x | 2016-06-10 |
4.2.x | 2015-07-31 |
4.1.x | 2014-09-14 |
4.0.x | 2013-12-12 |
3.2.x | 2012-12-13 |
3.1.x | 2011-12-13 |
3.0.x | 2009-12-17 |
2.5.x | 2007-12-25 |
2.0.x | 2006-10-04 |
1.2.x | 2005-05-13 |
1.1.x | 2004-09-05 |
1.0.x | 2003-03-24 |
Настройка (конфигурация XML)
Шаги по созданию Hello Spring:
- Исследуйте Spring Boot, чтобы узнать, будет ли это лучше соответствовать вашим потребностям.
- Создайте проект с правильными зависимостями. Рекомендуется использовать Maven или Gradle .
- создать класс POJO, например
Employee.java
- создайте XML-файл, в котором вы можете определить свой класс и переменные. например
beans.xml
- создайте свой основной класс, например
Customer.java
- Включите весенние бобы (и его транзитивные зависимости!) В качестве зависимости.
Employee.java
:
package com.test;
public class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void displayName() {
System.out.println(name);
}
}
beans.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-4.3.xsd">
<bean id="employee" class="com.test.Employee">
<property name="name" value="test spring"></property>
</bean>
</beans>
Customer.java
:
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Customer {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Employee obj = (Employee) context.getBean("employee");
obj.displayName();
}
}
Показывать основные функции Spring Spring
Описание
Это пример автономного запуска, включающий / демонстрацию: требуемые минимальные зависимости , конфигурацию Java, объявление Bean по аннотации и настройке Java, вложение зависимостей с помощью конструктора и по свойствам, а также перехватчики Pre / Post .
зависимости
Эти зависимости необходимы в пути к классам:
Основной класс
Начиная с конца, это наш основной класс, который служит заполнителем для метода main()
который инициализирует контекст приложения, указывая на класс конфигурации и загружая все различные компоненты, необходимые для демонстрации конкретных функций.
package com.stackoverflow.documentation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
//initializing the Application Context once per application.
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(AppConfig.class);
//bean registered by annotation
BeanDeclaredByAnnotation beanDeclaredByAnnotation =
applicationContext.getBean(BeanDeclaredByAnnotation.class);
beanDeclaredByAnnotation.sayHello();
//bean registered by Java configuration file
BeanDeclaredInAppConfig beanDeclaredInAppConfig =
applicationContext.getBean(BeanDeclaredInAppConfig.class);
beanDeclaredInAppConfig.sayHello();
//showcasing constructor injection
BeanConstructorInjection beanConstructorInjection =
applicationContext.getBean(BeanConstructorInjection.class);
beanConstructorInjection.sayHello();
//showcasing property injection
BeanPropertyInjection beanPropertyInjection =
applicationContext.getBean(BeanPropertyInjection.class);
beanPropertyInjection.sayHello();
//showcasing PreConstruct / PostDestroy hooks
BeanPostConstructPreDestroy beanPostConstructPreDestroy =
applicationContext.getBean(BeanPostConstructPreDestroy.class);
beanPostConstructPreDestroy.sayHello();
}
}
Файл конфигурации приложения
Класс конфигурации аннотируется @Configuration
и используется как параметр в инициализированном контексте приложения. Аннотация @ComponentScan
на уровне класса класса конфигурации указывает на пакет, который будет сканироваться для Beans и зависимостей, зарегистрированных с помощью аннотаций. Наконец, аннотация @Bean
служит в качестве определения компонента в классе конфигурации.
package com.stackoverflow.documentation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.stackoverflow.documentation")
public class AppConfig {
@Bean
public BeanDeclaredInAppConfig beanDeclaredInAppConfig() {
return new BeanDeclaredInAppConfig();
}
}
Бинарная декларация по аннотации
Аннотация @Component
служит для демаркации POJO в виде Spring-компонента, доступного для регистрации во время сканирования компонентов.
@Component
public class BeanDeclaredByAnnotation {
public void sayHello() {
System.out.println("Hello, World from BeanDeclaredByAnnotation !");
}
}
Блан-декларация по конфигурации приложения
Обратите внимание, что нам не нужно комментировать или иным образом отмечать наш POJO, так как объявление / определение bean-компонента происходит в файле класса конфигурации приложения.
public class BeanDeclaredInAppConfig {
public void sayHello() {
System.out.println("Hello, World from BeanDeclaredInAppConfig !");
}
}
Инъекция конструктора
Обратите внимание, что @Autowired
аннотация устанавливается на уровне конструктора. Также обратите внимание, что, если явно не определено по умолчанию, автоустановка по умолчанию происходит в зависимости от типа компонента (в данном случае BeanToBeInjected
).
package com.stackoverflow.documentation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class BeanConstructorInjection {
private BeanToBeInjected dependency;
@Autowired
public BeanConstructorInjection(BeanToBeInjected dependency) {
this.dependency = dependency;
}
public void sayHello() {
System.out.print("Hello, World from BeanConstructorInjection with dependency: ");
dependency.sayHello();
}
}
Инъекция недвижимости
Обратите внимание, что @Autowired
аннотация @Autowired
метод setter, имя которого следует стандарту JavaBeans.
package com.stackoverflow.documentation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class BeanPropertyInjection {
private BeanToBeInjected dependency;
@Autowired
public void setBeanToBeInjected(BeanToBeInjected beanToBeInjected) {
this.dependency = beanToBeInjected;
}
public void sayHello() {
System.out.println("Hello, World from BeanPropertyInjection !");
}
}
Перехватчики PostConstruct / PreDestroy
Мы можем перехватить инициализацию и уничтожение Боба с помощью @PostConstruct
и @PreDestroy
.
package com.stackoverflow.documentation;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component
public class BeanPostConstructPreDestroy {
@PostConstruct
public void pre() {
System.out.println("BeanPostConstructPreDestroy - PostConstruct");
}
public void sayHello() {
System.out.println(" Hello World, BeanPostConstructPreDestroy !");
}
@PreDestroy
public void post() {
System.out.println("BeanPostConstructPreDestroy - PreDestroy");
}
}
Что такое Spring Framework, зачем нам это делать?
Spring - это основа, которая предоставляет кучу классов, используя это, нам не нужно писать логику плиты котла в нашем коде, поэтому Spring предоставляет абстрактный слой на J2ee.
Для примера в Simple JDBC Application programmer отвечает за
- Загрузка класса драйвера
- Создание соединения
- Создание объекта-оператора
- Обработка исключений
- Создание запроса
- Выполнение запроса
- Закрытие соединения
Который рассматривается как шаблонный код, так как каждый программист пишет тот же код. Поэтому для простоты структура заботится о логике шаблонов, и программисту приходится писать только бизнес-логику. Таким образом, используя Spring framework, мы можем быстро разрабатывать проекты с минимальными строками кода, без каких-либо ошибок, стоимость разработки и время также сокращаются.
Итак, почему выбрать Spring как стойки?
Strut - это основа, которая обеспечивает решение только веб-аспектов, а стойки являются инвазивными по своей природе. Весна имеет множество функций над стойками, поэтому мы должны выбрать Spring.
- Spring - это неинвазивный характер: это означает, что вам не нужно расширять классы или реализовывать какие-либо интерфейсы для вашего класса.
- Весна универсальна : это означает, что она может интегрироваться с любой существующей технологией в вашем проекте.
- Spring обеспечивает конец разработки конечного проекта: Это означает , что мы можем развивать все модули , такие как бизнес - слой, сохранение слой.
- Весна - это легкий вес : это означает, что если вы хотите работать с определенным модулем, вам не нужно изучать полную весну, узнайте только об этом конкретном модуле (например, Spring Jdbc, Spring DAO)
- Spring поддерживает зависимость .
- Spring поддерживает несколько проектов, например: приложение Core Java, веб-приложение, распределенное приложение, корпоративное приложение.
- Spring поддерживает аспектно-ориентированное программирование для перекрестных проблем.
Поэтому, наконец, мы можем сказать, что Spring - это альтернатива Struts. Но Spring не является заменой J2EE API, поскольку классы, поставляемые Spring, внутренне используют классы J2EE API. Весна - обширная структура, поэтому она разделена на несколько модулей. Ни один модуль не зависит от другого, кроме Spring Core. Некоторые важные модули
- Spring Core
- Весна JDBC
- Весенний АОП
- Весенняя сделка
- Весенняя ОРМ
- Spring MVC