Co to jest Spring?

Spring pomaga developerom tworzyć proste, przenośne, szybki i elastyczne systemy oraz aplikacje oparte na JVM.

Spring jest frameworkiem aplikacyjnym oraz kontenerem odwrócenia sterowania dla aplikacji Java. Główne funkcje frameworku mogą być używane przez dowolną aplikację Java, ale jego rozszerzenia są przeznaczone głównie do tworzenia aplikacji webowych na platformie Java EE. Pomimo, że Spring nie narzuca żadnego konkretnego modelu programowania, jest często używany w alternatywie lub jako zamiennik czy dodatek do modelu Enterprise JavaBeans (EJB). Framework Spring jest projektem open source.

Zalety Spring

MNOGOŚĆ MOŻLIWOŚCI

Tworzenie czystego, łatwego do testowania kodu na komponentach wybranej infrastruktury i możliwość zrealizowania każdego zadania bez wymyślania prostych rozwiązań na nowo.

PRZENOŚNOŚĆ ROZWIĄZAŃ

Przenośność - aplikacje oparte o Spring działają na każdym środowisku z JVM i są możliwe do uruchomienia samodzielnie, na serwerze aplikacyjnym, w Chmurze, lub we wszystkich tych miejscach jednocześnie.

ZAPEWNIONE WSPARCIE

Programowanie bez obaw - Spring dostarcza otwarty, kompleksowy i spójny model oprogramowania, który jest szeroko rozumiany i dobrze wspierany.

Głównym celem Springa jest umożliwienie tworzenia złożonych systemów w łatwy sposób, z pominięciem modeli programowania wymuszających historyczne rozwiązania. Spring wprowadził i ustandaryzował wiele rozwiązań, które były wcześniej niedoceniane.

Elementy Spring

Framework Spring zawiera wiele modułów odpowiedzialnych za różne usługi

  • Spring Core Container: Podstawowy moduł Spring, którego rolą jest udostępnianie kontenerów Spring (BeanFactory i ApplicationContext).
  • Programowanie aspektowe: Umożliwia realizację paradygmatu aspektowego.
  • Uwierzytelnianie i autoryzacja: Konfigurowalne procesy zabezpieczeń, które wspierają szereg standardów, protokołów, narzędzie i praktyk przez pod-projekt Spring Security.
  • Convention over configuration: Rozwiązanie umożliwiające błyskawiczne tworzenie oprogramowania dla aplikacji opartych na Spring, realizowane przez moduł Spring Roo
  • Dostęp do danych: Współpraca z systemami relacyjnych baz danych na platformie Java przy użyciu JDBC oraz narzędzi mapowania obiektowo-relacyjnego i baz NoSQL
  • Kontener odwrócenia sterowania Konfiguracja komponentów aplikacji i zarządzanie przebiegiem życia obiektów Java realizowane głównie przez wstrzykiwanie zależności.
  • Powiadomienia: Konfigurowalne deklarowanie obiektów nasłuchujących dla przeźroczystego pobierania wiadomości z kolejek JMS, udoskonalenie przesyłania wiadomości przez stndardowe API JMS.
  • Model–view–controller: Framework oparty na HTTP oraz servletach, który umożliwia rozszerzanie i modyfikację aplikacji webowych oraz REST-owych Web Serwisów.
  • Zdalne zarządzanie: Marshalling obiektów Java umożliwiający ich konfigurację przez sieci wspierające protokoły oparte na HTTP, RMI, COBRA, włączając Web Serwisy (SOAP).
  • Zarządzanie transakcjami: Ujednolicenie szeregu API zarządzających transakcjami i koordynacja transakcji dla obiektów Java.
  • Zarządzanie zdalne: Uwydatnienie obiektów Java dla lokalnej lub zdalnej konfiguracji przez JMX.
  • Testowanie: Wsparcie dla klas przy tworzeniu testów jednostkowych i integracyjnych.

Jak Spring wygląda w kodzie?


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());
	}
}
      

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!";
            }
        };
    }

  public static void main(String[] args) {
      ApplicationContext context = 
          new AnnotationConfigApplicationContext(Application.class);
      MessagePrinter printer = context.getBean(MessagePrinter.class);
      printer.printMessage();
  }
}
      

Prezentacja możliwości Spring

Przydatne linki