Looking for spring Answers? Try Ask4KnowledgeBase
Looking for spring Keywords? Try Ask4Keywords

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:

  1. Исследуйте Spring Boot, чтобы узнать, будет ли это лучше соответствовать вашим потребностям.
  2. Создайте проект с правильными зависимостями. Рекомендуется использовать Maven или Gradle .
  3. создать класс POJO, например Employee.java
  4. создайте XML-файл, в котором вы можете определить свой класс и переменные. например beans.xml
  5. создайте свой основной класс, например Customer.java
  6. Включите весенние бобы (и его транзитивные зависимости!) В качестве зависимости.

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 .

зависимости

Эти зависимости необходимы в пути к классам:

  1. весна-жильный
  2. весна-контекст
  3. весна-бобы
  4. весна-АОП
  5. весна-выражение
  6. Обще-каротаж

Основной класс

Начиная с конца, это наш основной класс, который служит заполнителем для метода 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 отвечает за

  1. Загрузка класса драйвера
  2. Создание соединения
  3. Создание объекта-оператора
  4. Обработка исключений
  5. Создание запроса
  6. Выполнение запроса
  7. Закрытие соединения

Который рассматривается как шаблонный код, так как каждый программист пишет тот же код. Поэтому для простоты структура заботится о логике шаблонов, и программисту приходится писать только бизнес-логику. Таким образом, используя Spring framework, мы можем быстро разрабатывать проекты с минимальными строками кода, без каких-либо ошибок, стоимость разработки и время также сокращаются.

Итак, почему выбрать Spring как стойки?

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

  1. Spring - это неинвазивный характер: это означает, что вам не нужно расширять классы или реализовывать какие-либо интерфейсы для вашего класса.
  2. Весна универсальна : это означает, что она может интегрироваться с любой существующей технологией в вашем проекте.
  3. Spring обеспечивает конец разработки конечного проекта: Это означает , что мы можем развивать все модули , такие как бизнес - слой, сохранение слой.
  4. Весна - это легкий вес : это означает, что если вы хотите работать с определенным модулем, вам не нужно изучать полную весну, узнайте только об этом конкретном модуле (например, Spring Jdbc, Spring DAO)
  5. Spring поддерживает зависимость .
  6. Spring поддерживает несколько проектов, например: приложение Core Java, веб-приложение, распределенное приложение, корпоративное приложение.
  7. Spring поддерживает аспектно-ориентированное программирование для перекрестных проблем.

Поэтому, наконец, мы можем сказать, что Spring - это альтернатива Struts. Но Spring не является заменой J2EE API, поскольку классы, поставляемые Spring, внутренне используют классы J2EE API. Весна - обширная структура, поэтому она разделена на несколько модулей. Ни один модуль не зависит от другого, кроме Spring Core. Некоторые важные модули

  1. Spring Core
  2. Весна JDBC
  3. Весенний АОП
  4. Весенняя сделка
  5. Весенняя ОРМ
  6. Spring MVC