Что такое Spring Framework и для чего он нужен?
Введение
Spring-фреймворк обеспечивает комплексную программную и конфигурационную модель для современных Java-enterprise приложений. Ключевой элемент Spring это инфраструктурная поддержка приложений таким образом, чтобы команда разработчиков могла сфокусироваться на бизнес логике приложения которое они пишут, а не на технических деталях платформы на которую они устанавливают приложение.
Возможности
- Dependency Injection
 - Аспектно-ориентированное программирование включая декларативное управление транзакциями
 - Spring MVC и RESTful модули для создания веб-приложений
 - Поддержка JDBC, JPA, JMS
 - И много другого…
 
Все доступные фичи и модули описаны по ссылке overview-modules
Минимальные требования
- JDK 6+ для Spring Framework 4.x
 - JDK 5+ для Spring Framework 3.x
 
Простейший пример dependency injection
Создадим maven проект с зависимостью от Spring
При этом подключим spring-context. Это один из основных модулей, который предоставляет нам механизмы dependency injection.
<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
</dependencies>
Создадим сущность MessagePrinter
Это класс который имеет зависимость от сервиса MessageService
package hello;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MessagePrinter {
    final private MessageService service;
    @Autowired
    public MessagePrinter(MessageService service) {
        this.service = service;
    }
    public void printMessage() {
        System.out.println(this.service.getMessage());
    }
}
Создадим и сам сервис MessageService
package hello;
public interface MessageService {
    String getMessage();
}
Далее нам понадобиться магия Spring, чтобы связать их вместе
package hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.*;
@Configuration
@ComponentScan
public class Application {
    @Bean
    MessageService mockMessageService() {
        return new MessageService() {
            public String getMessage() {
                return "Hello World! This is our dummy Message Service speaking.";
            }
        };
    }
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
        MessagePrinter printer = context.getBean(MessagePrinter.class);
        printer.printMessage();
    }
}
Пример показывает концепцию Dependency Injection в действии, MessagePrinter отвязан(decoupled) от реализации MessageService при этом Spring Framework связывает эти классы вместе в конфигурации которая задается в Application классе.
Вы можете скачать рабочий пример кода по следующей ссылке spring-di-example
По мотивам: spring-framework
    
  
Leave a Comment