What is spring framework
What is spring framework
Spring Framework Overview
Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterprise environment, with support for Groovy and Kotlin as alternative languages on the JVM, and with the flexibility to create many kinds of architectures depending on an application’s needs. As of Spring Framework 5.1, Spring requires JDK 8+ (Java SE 8+) and provides out-of-the-box support for JDK 11 LTS. Java SE 8 update 60 is suggested as the minimum patch release for Java 8, but it is generally recommended to use a recent patch release.
Spring supports a wide range of application scenarios. In a large enterprise, applications often exist for a long time and have to run on a JDK and application server whose upgrade cycle is beyond developer control. Others may run as a single jar with the server embedded, possibly in a cloud environment. Yet others may be standalone applications (such as batch or integration workloads) that do not need a server.
Spring is open source. It has a large and active community that provides continuous feedback based on a diverse range of real-world use cases. This has helped Spring to successfully evolve over a very long time.
1. What We Mean by «Spring»
The term «Spring» means different things in different contexts. It can be used to refer to the Spring Framework project itself, which is where it all started. Over time, other Spring projects have been built on top of the Spring Framework. Most often, when people say «Spring», they mean the entire family of projects. This reference documentation focuses on the foundation: the Spring Framework itself.
The Spring Framework is divided into modules. Applications can choose which modules they need. At the heart are the modules of the core container, including a configuration model and a dependency injection mechanism. Beyond that, the Spring Framework provides foundational support for different application architectures, including messaging, transactional data and persistence, and web. It also includes the Servlet-based Spring MVC web framework and, in parallel, the Spring WebFlux reactive web framework.
A note about modules: Spring’s framework jars allow for deployment to JDK 9’s module path («Jigsaw»). For use in Jigsaw-enabled applications, the Spring Framework 5 jars come with «Automatic-Module-Name» manifest entries which define stable language-level module names («spring.core», «spring.context», etc.) independent from jar artifact names (the jars follow the same naming pattern with «-» instead of «.», e.g. «spring-core» and «spring-context»). Of course, Spring’s framework jars keep working fine on the classpath on both JDK 8 and 9+.
2. History of Spring and the Spring Framework
Spring came into being in 2003 as a response to the complexity of the early J2EE specifications. While some consider Java EE and Spring to be in competition, Spring is, in fact, complementary to Java EE. The Spring programming model does not embrace the Java EE platform specification; rather, it integrates with carefully selected individual specifications from the EE umbrella:
Why Spring?
Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world’s most popular Java framework.
“We use a lot of the tools that come with the Spring framework and reap the benefits of having a lot of the out of the box solutions, and not having to worry about writing a ton of additional code—so that really saves us some time and energy.”
Spring is everywhere
Spring’s flexible libraries are trusted by developers all over the world. Spring delivers delightful experiences to millions of end-users every day—whether that’s streaming TV, online shopping, or countless other innovative solutions. Spring also has contributions from all the big names in tech, including Alibaba, Amazon, Google, Microsoft, and more.
Spring is flexible
Spring’s flexible and comprehensive set of extensions and third-party libraries let developers build almost any application imaginable. At its core, Spring Framework’s Inversion of Control (IoC) and Dependency Injection (DI) features provide the foundation for a wide-ranging set of features and functionality. Whether you’re building secure, reactive, cloud-based microservices for the web, or complex streaming data flows for the enterprise, Spring has the tools to help.
Spring is productive
Spring Boot transforms how you approach Java programming tasks, radically streamlining your experience. Spring Boot combines necessities such as an application context and an auto-configured, embedded web server to make microservice development a cinch. To go even faster, you can combine Spring Boot with Spring Cloud’s rich set of supporting libraries, servers, patterns, and templates, to safely deploy entire microservices-based architectures into the cloud, in record time.
Spring is fast
Our engineers care deeply about performance. With Spring, you’ll notice fast startup, fast shutdown, and optimized execution, by default. Increasingly, Spring projects also support the reactive (nonblocking) programming model for even greater efficiency. Developer productivity is Spring’s superpower. Spring Boot helps developers build applications with ease and with far less toil than other competing paradigms. Embedded web servers, auto-configuration, and “fat jars” help you get started quickly, and innovations like LiveReload in Spring DevTools mean developers can iterate faster than ever before. You can even start a new Spring project in seconds, with the Spring Initializr at start.spring.io.
Spring is secure
Spring has a proven track record of dealing with security issues quickly and responsibly. The Spring committers work with security professionals to patch and test any reported vulnerabilities. Third-party dependencies are also monitored closely, and regular updates are issued to help keep your data and applications as safe as possible. In addition, Spring Security makes it easier for you to integrate with industry-standard security schemes and deliver trustworthy solutions that are secure by default.
Spring is supportive
The Spring community is enormous, global, diverse, and spans folks of all ages and capabilities, from complete beginners to seasoned pros. No matter where you are on your journey, you can find the support and resources you need to get you to the next level: quickstarts, guides & tutorials, videos, meetups, support, or even formal training and certification.
What can Spring do?
Microservices
Quickly deliver production‑grade features with independently evolvable microservices.
Reactive
Spring’s asynchronous, nonblocking architecture means you can get more from your computing resources.
Cloud
Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.
Web apps
Frameworks for fast, secure, and responsive web applications connected to any data store.
Serverless
The ultimate flexibility. Scale up on demand and scale to zero when there’s no demand.
Event Driven
Integrate with your enterprise. React to business events. Act on your streaming data in realtime.
Batch
Automated tasks. Offline processing of data at a time to suit you.
Get ahead
VMware offers training and certification to turbo-charge your progress.
Get support
Spring Runtime offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.
Upcoming events
Check out all the upcoming events in the Spring community.
Spring Framework
A key element of Spring is infrastructural support at the application level: Spring focuses on the «plumbing» of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.
Support Policy and Migration
For information about minimum requirements, guidance on upgrading from earlier versions and support policies, please check out the official Spring Framework wiki page
Features
Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP.
Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML.
Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache.
Languages: Kotlin, Groovy, dynamic languages.
SpringOnePlatform 2017 talks
Quickstart Your Project
Documentation
5.3.22 CURRENT GA | Reference Doc. | API Doc. |
6.0.0-SNAPSHOT SNAPSHOT | Reference Doc. | API Doc. |
6.0.0-M5 PRE | Reference Doc. | API Doc. |
5.3.23-SNAPSHOT SNAPSHOT | Reference Doc. | API Doc. |
5.2.23.BUILD-SNAPSHOT SNAPSHOT | Reference Doc. | API Doc. |
5.2.22.RELEASE GA | Reference Doc. | API Doc. |
Tutorials
Branch | Initial Release | End of Support | End Commercial Support * |
---|---|---|---|