Content deleted Content added
PerLundberg (talk | contribs) Broaden the OSS reference to FOSS, since Spring is both |
m Bot: link syntax and minor changes |
||
Line 80:
* Messaging: declarative registration of message listener objects for transparent message-consumption from [[message queue]]s via [[Java Message Service]] (JMS), improvement of message sending over standard JMS APIs.{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§15-4 Create Message-Driven POJOs in Spring | pp=677-681}}
* [[Model–view–controller]]: an [[HTTP]]- and [[Java Servlet API|servlet]]-based framework providing hooks for extension and customization for web applications and [[REST]]ful (representational state transfer) Web services.{{sfn | Johnson | Höller | Arendsen | Risberg | 2005 | loc=Chapter §12 - Web MVC Framework}}{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§4 Spring @MVC | p=217}}
* Remote access framework: declarative [[remote procedure call]] (RPC)-style{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§12-3 Writing a Custom ItemWriter and ItemReader | pp=525-534}} [[Marshalling (computer science)|marshalling]] of Java objects over networks supporting [[Java remote method invocation]] (RMI),{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§14-7 Expose and Invoke Services through RMI; §14-8 Expose and Invoke Services through HTTP | pp=627-632}} [[CORBA]] (Common Object Request Broker Architecture) and [[HTTP]]-based protocols including [[Web services]] such as [[SOAP (protocol)|SOAP (Simple Object Access Protocol)]]
Marshalling|pp=641-658}}{{sfn | Johnson | Höller | Arendsen | Risberg | 2005 | loc=Chapter §8 - Lightweight Remoting}}
* [[Transaction processing|Transaction management]]: unifies several transaction management APIs and coordinates transactions for Java objects.{{sfn | Johnson | Höller | Arendsen | Risberg | 2005 | loc=Chapter §9 - Supporting Services}}{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§11 Spring Transaction Management | p=475}}
Line 91:
Spring modules are packaged as JAR files.{{sfn | Cosmina | Harrop | Schaefer | Ho | 2017 | p=21-23}} These artifacts can be accessed via the Maven Central Repository using [[Apache Maven|Maven]]{{sfn | Cosmina | Harrop | Schaefer | Ho | 2017 | loc=§2 Accessing Spring Modules Using Maven | pp=24-25}} or [[Gradle]].{{sfn | Cosmina | Harrop | Schaefer | Ho | 2017 | loc=§2 Accessing Spring Modules Using Gradle| p=26}}
=== Inversion of control container ===
The [[inversion of control]] (IoC) container is the core container in the Spring Framework.{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2 Spring Core Tasks | p=47}} It provides a consistent means of configuring and managing Java objects{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2 Spring Core Tasks | p=47}}{{sfn|Johnson|Hoeller|2004}}{{rp|pp=127–131}} using [[Reflection (computer science)|reflection]].{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2-2 Create POJOs by Invoking a Constructor|pp=53-62}} The container is responsible for managing [[Object lifetime|object lifecycles]] of specific objects:{{sfn|Johnson|Hoeller|2004}}{{rp | p=128}} creating these objects,{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2-1 Manage and Configure POJOs with the Spring IoC Container|pp=48-52}} calling their [[Initialization (programming)|initialization]] methods,{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2-2 Create POJOs by Invoking a Constructor|pp=53-62}} and configuring these objects by wiring them together.{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2-3 Use POJO References, Auto-Wiring, and Imports to Interact with Other POJOs|pp=59-67}}
Line 101:
Objects created by the container are called managed objects or [[JavaBeans|beans]].{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2-16 Use Property Editors in Spring|pp=112-116}} The container can be configured by loading [[XML]] (Extensible Markup Language) files{{sfn | Deinum | Rubio | Long | Mak | 2014 | loc=§2-1 Manage and Configure POJOs with the Spring IoC Container | pp=48-52}}{{sfn | Johnson | Hoeller | 2004}}{{rp|pp=151–152}} or detecting specific [[Java annotation]]s on configuration classes. These data sources contain the bean definitions that provide the information required to create the beans.
The {{code|@Configuration}} is a Spring-specific annotation that marks a class as the configuration class that
==== Types of Inversion of Control ====
There are several types of Inversion of Control. Dependency injection and dependency lookup are examples of Inversion of Control.{{sfn | Cosmina | Harrop | Schaefer | Ho | 2017 | loc=§3 Introducing IoC and DI in Spring | p=37}} Objects can be obtained by means of either dependency lookup or dependency injection.{{sfn | Johnson | Hoeller | 2004}}{{rp | p=127}}<ref>[http://forum.springsource.org/showthread.php?79731-What-is-the-difference-between-the-depencylookup-and-dependency-injection What is the difference between the depencylookup and dependency injection - Spring Forum]. Forum.springsource.org (2009-10-28). Retrieved on 2013-11-24.</ref>
Line 352:
Although applications using Spring WebFlux technology is usually less readable than their MVC counterparts, they are more resilient, and simpler to extend.{{sfn|Deinum|Cosmina|2021|loc=§11 Securing Spring WebFlux Applications|p=421}} Spring WebFlux reduces the need to deal with the complications associated with synchronizing thread access.{{sfn|Deinum|Cosmina|2021|loc=§11 Securing Spring WebFlux Applications|p=421}}
Spring WebFlux supports [[server-sent events]] (SSE), which is a server push technology that allows the client to get automatic
==Relationship with Jakarta Enterprise Beans (EJB)==
|