¿Para qué es exactamente Spring Framework? [cerrado]

623

Escucho mucho sobre Spring , la gente dice en toda la web que Spring es un buen marco para el desarrollo web. ¿Para qué es exactamente Spring Framework?

Maksim
fuente
10
Entiendo que la pregunta es muy amplia, pero creo que en este caso muy específico, la pregunta es muy importante para los desarrolladores de junion, a los que a menudo se les habla sobre Spring por personas que suponen que es lo suficientemente popular como para que ni siquiera sea necesario decir qué lo hace. Después de todo, levante la mano si nunca escuchó sobre Instagram y cuál es su propósito ... (confesión: nunca usé Insta)
usr-local-ΕΨΗΕΛΩΝ
2
La pregunta se hizo hace 10 años, y en ese momento Spring era un poco más pequeña que ahora con todos sus subproyectos, como Spring Boot, Spring Data, Spring Rest, etc. Y en realidad por eso estaba más cerca hace un año, debido a La amplitud de esta pregunta. En el momento en que hice esta pregunta solo quería entender DI y por qué es necesario.
Maksim

Respuestas:

713

Básicamente la primavera es un marco para que es un patrón que permite construir sistemas muy desacoplados.

El problema

Por ejemplo, suponga que necesita enumerar los usuarios del sistema y declarar una interfaz llamada UserLister:

public interface UserLister {
    List<User> getUsers();
}

Y tal vez una implementación que acceda a una base de datos para obtener todos los usuarios:

public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

En su opinión, necesitará acceder a una instancia (solo un ejemplo, recuerde):

public class SomeView {
    private UserLister userLister;

    public void render() {
        List<User> users = userLister.getUsers();
        view.render(users);
    }
}

Tenga en cuenta que el código anterior no ha inicializado la variable userLister. ¿Qué debemos hacer? Si ejemplifico explícitamente el objeto de esta manera:

UserLister userLister = new UserListerDB();

... acoplaría la vista con mi implementación de la clase que accede a la base de datos. ¿Qué sucede si quiero cambiar de la implementación de DB a otra que obtenga la lista de usuarios de un archivo separado por comas (recuerde, es un ejemplo)? En ese caso, volvería a mi código y cambiaría la línea anterior a:

UserLister userLister = new UserListerCommaSeparatedFile();

Esto no tiene ningún problema con un programa pequeño como este, pero ... ¿Qué sucede en un programa que tiene cientos de visitas y un número similar de clases de negocios? ¡El mantenimiento se convierte en una pesadilla!

Enfoque de primavera (inyección de dependencia)

Lo que Spring hace es conectar las clases mediante el uso de un archivo XML o anotaciones, de esta manera todos los objetos son instanciados e inicializados por Spring e inyectados en los lugares correctos (Servlets, Web Frameworks, clases de negocios, DAO, etc., etc., etc. ...)

Volviendo al ejemplo en Spring, solo necesitamos tener un configurador para el userListercampo y tener un archivo XML como este:

<bean id="userLister" class="UserListerDB" />

<bean class="SomeView">
    <property name="userLister" ref="userLister" />
</bean>

o más simplemente anote lo archivado en nuestra clase de vista con @Inject:

@Inject
private UserLister userLister;

De esta manera, cuando se crea la vista, mágicamente estará UserListerlista para funcionar.

List<User> users = userLister.getUsers();  // This will actually work
                                           // without adding any line of code

¡Eso es genial! ¿No es así?

  • ¿Qué sucede si desea utilizar otra implementación de su UserListerinterfaz? Solo cambia el XML.
  • ¿Qué pasa si no tengo una UserListerimplementación lista? Programe una implementación simulada temporal UserListery facilite el desarrollo de la vista.
  • ¿Qué pasa si ya no quiero usar Spring? ¡Solo no lo uses! Su aplicación no está acoplada a ella. Inversión de estados de control : "La aplicación controla el marco, no el marco controla la aplicación".

Hay algunas otras opciones para la inyección de dependencia por ahí, lo que en mi opinión ha hecho que Spring sea tan famoso además de su simplicidad, elegancia y estabilidad es que los muchachos de SpringSource han programado muchos POJO que ayudan a integrar Spring con muchos otros marcos comunes sin ser intrusivo en su aplicación. Además, Spring tiene varios subproyectos buenos como Spring MVC, Spring WebFlow, Spring Security y, de nuevo, una lista muuucha de etcétera.

Espero que esto ayude. De todos modos, te animo a leer el artículo de Martin Fowler sobre Inyección de dependencia e Inversión de control porque lo hace mejor que yo. Después de comprender los conceptos básicos, eche un vistazo a la documentación de Spring , en mi opinión, suele ser el mejor libro de Spring de todos los tiempos.

Victor Hugo
fuente
148
¿Cuál es la diferencia entre tener que cambiar una línea de código y una línea de XML? El infierno de esfuerzo y mantenimiento es exactamente el mismo, o incluso peor, ya que los archivos xml externos posiblemente agreguen complejidad. Lo siento, pero no lo entiendo, no veo ningún beneficio en absoluto. Por favor, llámame si me falta algo.
Fred
23
@fred - Imagina que estás haciendo pruebas unitarias. Sin la inyección de dependencia (DI se puede usar con anotaciones o con XML) no puede probar adecuadamente, porque no puede burlarse de las dependencias.
Petar Minchev
18
@fred: definir toda la inyección en XML tiene poco sentido. Es una sobrecarga masiva para mantener. Por lo tanto, EJB introdujo el concepto de anotaciones para puntos de inyección. Esos son mucho más simples y se inyectará una instancia predeterminada (para las pruebas unitarias, esto se puede cambiar una vez). Esto funcionó tan bien que Spring ahora ha copiado este enfoque. Tenga en cuenta que si es necesario (pero solo si es realmente necesario), las anotaciones pueden ser anuladas por XML en EJB.
Mike Braun
36
O, ya sabes, usa un método estático de fábrica. Cambie el tipo de retorno de fábrica y ahora se cambian todas las clases que usan ese valor de retorno. Presto Spring ya no es necesaria ...
Qix - MONICA FUE MALTRATADA el
16
@mmcrae Prefiero hacer una llamada de refactorización en mi IDE que escribir XML.
Qix - MONICA FUE MALTRATADA el
63

Spring contiene ( como Skaffman señaló correctamente ) un marco MVC. Para explicar en breve aquí están mis entradas. Spring admite la segregación de la capa de servicio, la capa web y la capa empresarial, pero lo que realmente hace mejor es la "inyección" de objetos. Entonces, para explicar eso con un ejemplo, considere el siguiente ejemplo:

public interface FourWheel
{
   public void drive();
}

public class Sedan implements FourWheel
{
   public void drive()
   {
      //drive gracefully
   }
}

public class SUV implements FourWheel
{
   public void drive()
   {
      //Rule the rough terrain
   }
}

Ahora en su código tiene una clase llamada RoadTrip de la siguiente manera

public class RoadTrip
{
    private FourWheel myCarForTrip;
}

Ahora, cuando quieras una instancia de Trip; a veces puede querer un SUV para inicializar FourWheel o, a veces, puede querer Sedan. Realmente depende de lo que quieras en función de una situación específica.

Para resolver este problema, querrá tener un Patrón de fábrica como patrón de creación. Donde una fábrica devuelve la instancia correcta. Entonces, eventualmente terminarás con un montón de código de pegamento solo para instanciar objetos correctamente. Spring hace el trabajo del código de pegamento mejor sin ese código de pegamento. Declara asignaciones en XML e inicializa los objetos automáticamente. También hace mucho uso de la arquitectura singleton para instancias y eso ayuda a optimizar el uso de la memoria.

Esto también se llama Inversión de control. Otros marcos para hacer esto son Google Guice, contenedor Pico, etc.

Además de esto, Spring tiene un marco de validación, un amplio soporte para la capa DAO en colaboración con JDBC, iBatis e Hibernate (y muchos más). Proporciona un excelente control transaccional sobre las transacciones de la base de datos.

Hay mucho más en Spring que se puede leer en buenos libros como "Pro Spring".

Las siguientes URL también pueden ser de ayuda.
http://static.springframework.org/docs/Spring-MVC-step-by-step/
http://en.wikipedia.org/wiki/Spring_Framework
http://www.theserverside.com/tt/articles/article .tss? l = SpringFramework

Priyank
fuente
55
Spring contiene un marco MVC. Pero es mucho, mucho más que eso.
skaffman
Sin desear demasiado, WebMVC es parte de la distribución central de primavera. Webflow, RCP y otros no lo son.
skaffman
1
Eso es bueno, no sabía que puede crear instancias de objetos de tipo Interfaz en Java, lo cual es ilegal @skaffman, ayúdame a entender esta respuesta (ver Instancia de FourWheel)
Jossie Calderon
47

En los viejos tiempos, Spring era un marco de inyección de dependencia que funcionaba solo como ( Guice , PicoContainer , ...), pero hoy en día es una solución total para construir su aplicación empresarial .

La inyección de dependencia de primavera, que es, por supuesto, el corazón de la primavera todavía está allí (y puede revisar otras buenas respuestas aquí), pero hay más de la primavera ...

Spring ahora tiene muchos proyectos, cada uno con algunos subproyectos ( http://spring.io/projects ). Cuando alguien habla sobre la primavera, debes averiguar de qué proyecto de primavera está hablando, si es solo el núcleo de primavera, que se conoce como marco de primavera , o si se trata de otros proyectos de primavera.

Algunos proyectos de primavera que vale la pena mencionar son:

Si necesita alguna característica más específica para su aplicación, también puede encontrarla allí:

  • Spring Batch batch framework diseñado para permitir el desarrollo de
    aplicaciones por lotes
  • Spring HATEOAS fácil creación de REST API basada en el director de HATEOAS
  • Spring Mobile y Spring Andriod para el desarrollo de aplicaciones móviles
  • Spring Shell construye una aplicación de shell completa (también conocida como línea de comando)
  • Spring Cloud y Spring Cloud Data Flow para aplicaciones en la nube

También hay algunos proyectos pequeños allí, por ejemplo spring-social-facebook ( http://projects.spring.io/spring-social-facebook/ )

Puede usar spring para el desarrollo web, ya que tiene el Spring MVCmódulo que forma parte del proyecto Spring Framework . O puede usar spring con otro marco web, como struts2 .

Alireza Fattahi
fuente
1
De hecho, me gustaría ver que mvc, data, jpa y otras partes de Spring tengan la opción de no usar el núcleo DI de Spring, sino poner a Dagger en el corazón de Spring.
dlamblin
25

¿Para qué sirve la primavera? Contestaré esa pregunta en breve, pero primero, echemos otro vistazo al ejemplo de victor hugo. No es un gran ejemplo porque no justifica la necesidad de un nuevo marco.

public class BaseView {
  protected UserLister userLister;

  public BaseView() {
    userLister = new UserListerDB(); // only line of code that needs changing
  }
}

public class SomeView extends BaseView {
  public SomeView() {
    super();
  }

  public void render() {
    List<User> users = userLister.getUsers();
    view.render(users);
  }
}

¡Hecho! Ahora, incluso si tiene cientos o miles de vistas, solo necesita cambiar la línea de código, como en el enfoque Spring XML. ¿Pero cambiar una línea de código aún requiere recompilar en lugar de editar XML, dice? Bueno, mi amigo quisquilloso, ¡usa Ant y script!

Entonces, ¿para qué sirve la primavera? Es para:

  1. Desarrolladores ciegos que siguen al rebaño
  2. Los empleadores que nunca quieren contratar programadores graduados porque no enseñan tales marcos en Uni
  3. Proyectos que comenzaron con un mal diseño y necesitan un mosaico (como se muestra en el ejemplo de victor hugo)

Lectura adicional: http://discuss.joelonsoftware.com/?joel.3.219431.12

Ceniza
fuente
11
Dejando de lado la frustración, me pregunto acerca de sus argumentos. No conozco ninguna herramienta de programación que no puedas usar para producir un mal diseño. A lo que apunta es que al usar frameworks puede hacer que un código incorrecto haga muchas cosas. Eso es universalmente cierto y no específico de Spring. De lo contrario, ¿cuál es el punto? ¿No crees que los desarrolladores competentes pueden hacer un gran uso de lo que Spring tiene para ofrecer, siendo particular en qué herramientas del marco que usan? Al menos estoy bastante seguro de que no implica que ningún desarrollador de Spring haya oído hablar de la extensión de clases. Sin embargo, la lectura adicional es graciosa.
sthzg
2
Además, su ejemplo funciona porque la vista solo necesita un servicio inyectado ( UserLister), pero ¿qué pasa si necesita varios servicios, no compartidos entre los diferentes BaseViewhijos? (Afortunadamente) no hay herencia múltiple en Java.
Edouard Berthe
@EdouardBerthe Fair point. Mi respuesta no fue un intento de ignorar la DI, solo señala que el ejemplo que se muestra en la respuesta aceptada no es el mejor; el escenario que está proponiendo probablemente funcionaría mejor. El punto que realmente estaba tratando de aclarar no es que no necesita DI, sino que no necesita un marco completo para hacerlo.
Ash
19

Muy brevemente resumido, diré que Spring es el "pegamento" en su aplicación. Se utiliza para integrar diferentes marcos y su propio código.

Johan
fuente
15

La primavera es tres cosas.

  1. Spring maneja la inyección de dependencia y le recomiendo que lea la excelente introducción de Martin Fowler sobre la inyección de dependencia.
  2. Lo segundo que hace Spring es envolver excelentes bibliotecas Java de una manera muy elegante para usar en sus aplicaciones. Para ver un buen ejemplo, vea cómo Spring envuelve los Ejecutores de tareas y el Programador de cuarzo.
  3. En tercer lugar, Spring ofrece un montón de implementaciones de cosas web como REST, un marco web MVC y más. Calculan que ya que está utilizando Spring para los dos primeros, tal vez pueda usarlo para todo lo que su aplicación web necesita.

El problema es que Spring DI está muy bien pensado, las envolturas alrededor de otras cosas están muy bien pensadas en que las otras cosas lo pensaron todo y Spring simplemente lo envuelve muy bien. Las implementaciones de Spring de MVC y REST y todo lo demás no está tan bien hecho (YMMV, IMHO) pero hay excepciones (Spring Security es una bomba). Por lo tanto, tiendo a usar Spring para DI y sus geniales envoltorios, pero prefiero otras cosas para la Web (me gusta mucho Tapestry), REST (Jersey es realmente robusto), etc.

karstensrage
fuente
99
YMMV, en mi humilde opinión: su kilometraje puede variar, en mi humilde opinión para aquellos de ustedes que no dominan las abreviaturas como yo ...
Sakamoto Kazuma
11

Lo que probablemente querría en una aplicación web con Spring:

  • Spring MVC, que con 2.5+ le permite usar POJO como clases de Controlador, lo que significa que no tiene que extenderse desde ningún marco en particular (como en Struts o Spring pre-2.5). Las clases de controlador también son fáciles de probar gracias en parte a la inyección de dependencia
  • Integración de Spring con Hibernate, que hace un buen trabajo simplificando el trabajo con esa solución ORM (para la mayoría de los casos)
  • El uso de Spring para una aplicación web le permite usar sus Objetos de dominio en todos los niveles de la aplicación: las mismas clases que se asignan con Hibernate son las clases que usa como "beans de formulario". Por naturaleza, esto conducirá a un modelo de dominio más robusto, en parte porque va a reducir el número de clases.
  • Las etiquetas de formulario de Spring facilitan la creación de formularios sin mucha molestia.

Además, Spring es ENORME, por lo que hay muchas otras cosas que podría interesarle usar en una aplicación web como Spring AOP o Spring Security. Pero las cuatro cosas mencionadas anteriormente describen los componentes comunes de Spring que se usan en una aplicación web.

bpapa
fuente
9

Veo dos partes para esto:

  1. "Para qué es exactamente Spring" -> vea la respuesta aceptada por Victor Hugo.
  2. "[...] Spring es [un] buen marco para el desarrollo web" -> las personas que dicen esto están hablando de Spring MVC. Spring MVC es una de las muchas partes de Spring, y es un marco web que hace uso de las características generales de Spring, como la inyección de dependencia. Es un marco bastante genérico en el sentido de que es muy configurable: puede usar diferentes capas db (Hibernate, iBatis, plain JDBC), diferentes capas de vista (JSP, Velocity, Freemarker ...)

Tenga en cuenta que puede usar Spring perfectamente en una aplicación web sin usar Spring MVC. Yo diría que la mayoría de las aplicaciones web Java hacen esto, mientras usan otros marcos web como Wicket, Struts, Seam, ...

Tom De Leu
fuente
8

La primavera es ideal para pegar instancias de clases juntas. Usted sabe que sus clases de Hibernate siempre necesitarán una fuente de datos, Spring las conecta (y también tiene una implementación de la fuente de datos).

Sus objetos de acceso a datos siempre necesitarán acceso a Hibernate, Spring conecta las clases de Hibernate a sus DAO por usted.

Además, Spring básicamente le brinda configuraciones sólidas de un montón de bibliotecas, y en eso, le brinda orientación sobre qué bibliotecas debe usar.

La primavera es realmente una gran herramienta. (No estaba hablando de Spring MVC, solo el marco base).

stevedbrown
fuente
5

La respuesta aceptada no implica el uso de anotaciones desde que Spring introdujo el soporte para varias anotaciones para la configuración.

Enfoque de primavera (inyección de dependencia)

Existe otra forma de conectar las clases junto con un archivo XML: las anotaciones. Vamos a usar el ejemplo de la respuesta aceptada y registran el grano directamente en la clase utilizando una de las anotaciones @Component, @Service, @Repositoryo @Configuration:

@Component
public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

De esta manera, cuando se crea la vista, mágicamente tendrá un UserLister listo para funcionar.

La declaración anterior es válida con una pequeña ventaja de no necesitar ningún uso de archivos XML y conectar con otra anotación @Autowiredque encuentre una implementación relevante y la inyecte.

@Autowired
private UserLister userLister;

Use la @Beananotación en un método utilizado para inyectar la implementación del bean.

Nikolas
fuente
Incorrecto. No puede usar la @Beananotación a nivel de clase. Debe ser uno de @Component, @Service, @Repositoryetc. El descanso es correcta. Quizás también deba señalar que el Autoconexión de la interfaz de esta manera solo funcionará si solo hay 1 clase candidata en classpath adecuada para inyección, de lo contrario, error de aplicación Spring.
Stefano L
@StefanoL: Sí, tienes razón. Me pregunto si la gente ignoró mi error. Gracias por el comentario.
Nikolas
4

La ventaja es inyección de dependencia (DI) . Significa externalizar la tarea de creación de objetos. Permítanme explicarlo con un ejemplo.

public interface Lunch
{
   public void eat();
}

public class Buffet implements Lunch
{
   public void eat()
   {
      // Eat as much as you can 
   }
}

public class Plated implements Lunch
{
   public void eat()
   {
      // Eat a limited portion
   }
}

Ahora en mi código tengo una clase LunchDecide de la siguiente manera:

public class LunchDecide {
    private Lunch todaysLunch;
    public LunchDecide(){
        this.todaysLunch = new Buffet(); // choose Buffet -> eat as much as you want
        //this.todaysLunch = new Plated(); // choose Plated -> eat a limited portion 
    }
}

En la clase anterior, dependiendo de nuestro estado de ánimo, elegimos Buffet () o Plated (). Sin embargo, este sistema está estrechamente acoplado. Cada vez que necesitamos un tipo diferente de Objeto, necesitamos cambiar el código. En este caso, comentando una línea! Imagine que hay 50 clases diferentes utilizadas por 50 personas diferentes. Sería un desastre. En este caso, necesitamos desacoplar el sistema. Reescribamos la clase LunchDecide.

public class LunchDecide {
    private Lunch todaysLunch;
    public LunchDecide(Lunch todaysLunch){
        this.todaysLunch = todaysLunch
        }
    }

Tenga en cuenta que, en lugar de crear un objeto con una nueva palabra clave, pasamos la referencia a un objeto de Lunch Type como parámetro a nuestro constructor. Aquí, la creación de objetos se subcontrata. Este código se puede conectar mediante el archivo de configuración Xml (heredado) o las anotaciones de Java (moderno). De cualquier manera, la decisión sobre qué tipo de objeto se crearía se tomaría allí durante el tiempo de ejecución. Xml inyectaría un objeto en nuestro código: nuestro código depende de Xml para ese trabajo. Por lo tanto, la inyección de dependencia (DI). DI no solo ayuda a hacer que nuestro sistema esté débilmente acoplado, sino que simplifica la escritura de pruebas de Unidad, ya que permite burlarse de las dependencias. Por último, pero no menos importante, DI optimiza la Programación Orientada a Aspectos (AOP) que conduce a un mayor desacoplamiento y un aumento de la modularidad. También tenga en cuenta que arriba DI es inyección de constructor.

Sumit Pokhrel
fuente
Pero incluso en el caso de la primavera, todavía estaríamos definiendo frijoles. y la identificación del bean se dará en el código, ¿no? así que si cambias el bean mañana, todavía tienes que cambiar el código, ¿no? Entonces, ¿cuál es el beneficio?
Arpan Buch
@ArpanBuch Creo que el beneficio de spring es que puede elegir una implementación diferente sin volver a compilar ningún código (siempre que la otra implementación ya exista). Soy un principiante, así que podría estar equivocado.
byxor
4
  • Spring es un marco ligero y flexible en comparación con J2EE.
  • El contenedor de resorte actúa como una inversión de control.
  • Spring usa AOP, es decir, proxies y patrones Singleton, Factory y Template Method Design.
  • Arquitecturas escalonadas: separación de preocupaciones y capas reutilizables y fácil mantenimiento.

ingrese la descripción de la imagen aquí

Premraj
fuente
1
Spring Framework help you with several things like, don't reinvent the wheel. you can connect very easily with some database just using Spring Data, or create schedule tasks like CronJob or Windows Task. amazing !
tomj0101
3

Spring es una buena alternativa a la tecnología Enterprise JavaBeans (EJB) . También tiene un marco web y un componente de marco de servicios web.

fastcodejava
fuente
1
Puedo corregir? Era una alternativa al EJB 2 (horrible) ... parece que el "nuevo EJB" (en parte, JPA 2, etc.) tiene una aceptación excelente. "Las horas felices" de la parte de primavera "parece una especie de EJB" pasado. ad 2015
Jacek Cz
1

Spring comenzó como un sistema de inyección de dependencia bastante simple. Ahora es enorme y tiene todo (excepto el fregadero de la cocina proverbial).

Pero no temas, es bastante modular, por lo que puedes usar solo las piezas que quieras.

Para ver dónde comenzó todo, intente:

http://www.amazon.com/Expert-One-Design-Development-Programmer/dp/0764543857/ref=sr_1_1?ie=UTF8&s=books&qid=1246374863&sr=1-1

Puede ser viejo pero es un libro excelente.

Para otro buen libro esta vez dedicado exclusivamente a la primavera, ver:

http://www.amazon.com/Professional-Java-Development-Spring-Framework/dp/0764574833/ref=sr_1_2?ie=UTF8&s=books&qid=1246374863&sr=1-2

También hace referencia a versiones anteriores de Spring, pero definitivamente vale la pena mirarlo.

Pablojim
fuente
1

Spring fue la inyección de dependencia al principio, luego agregue el rey de los contenedores para casi todo (envoltorio sobre implementaciones JPA, etc.).

Larga historia ... la mayoría de las partes de Spring prefieren soluciones XML (motor de secuencias de comandos XML ... brrrr), así que para DI utilizo Guice

Buena biblioteca, pero con un depnedenciec creciente, por ejemplo Spring JDBC (tal vez una solución Java jdbc con parámetros de nombres reales) toma de maven 4-5 a continuación.

Usando Spring MVC (parte de "big spring") para el desarrollo web ... es un marco "basado en solicitudes", hay una guerra santa "solicitud vs componente" ... depende de usted

Jacek Cz
fuente
1
Creo que ahora Spring Framework está tratando de alejarse de XML a Annotations y configuración de Java.
Maksim
0

En el pasado pensé en Spring Framework desde un punto de vista puramente técnico.

Dada cierta experiencia de trabajo en equipo y desarrollo de Webapps empresariales, diría que Spring es para un desarrollo más rápido de aplicaciones (aplicaciones web) al desacoplar sus elementos individuales (beans). El desarrollo más rápido lo hace tan popular. Spring permite cambiar la responsabilidad de construir (conectar) la aplicación en el marco de Spring. La inyección de dependencia del framework Spring es responsable de conectar / cablear beans individuales en una aplicación que funcione.

De esta forma, los desarrolladores pueden centrarse más en el desarrollo de componentes individuales (beans) tan pronto como se definan las interfaces entre beans.

La prueba de dicha aplicación es fácil: el enfoque principal se da a los granos individuales. Se pueden desacoplar y burlar fácilmente, por lo que las pruebas unitarias son rápidas y eficientes.

Spring framework define múltiples beans especializados, como @Controller ( @Restcontroller ), @Repository , @Component para fines web. Spring junto con Maven proporcionan una estructura intuitiva para los desarrolladores. El trabajo en equipo es fácil y rápido, ya que hay elementos individuales que se mantienen separados y se pueden reutilizar.

Witold Kaczurba
fuente
0

Spring Framework es definitivamente bueno para el desarrollo web y para ser más específico para los servicios de API relajantes.

Es bueno para lo anterior debido a su inyección de dependencia e integración con otros módulos como spring security , spring aop , mvc framework , microservicios

Con cualquier aplicación, la seguridad es probablemente un requisito.
Si desea crear un producto que requiera un mantenimiento prolongado, necesitará utilizar el concepto Aop.

Si su aplicación tiene mucho tráfico aumentando así la carga, debe usar el concepto de microservicios.

Spring ofrece todas estas características en una sola plataforma. Soporte con muchos módulos .
Lo más importante, Spring es de código abierto y un marco extensible, tiene un gancho en todas partes para integrar código personalizado en el ciclo de vida.

Spring Data es un proyecto que proporciona integración con su proyecto.


Por lo tanto, la primavera puede adaptarse a casi todos los requisitos.

pratik deshai
fuente