¿Por qué utilizar el framework Spring cuando podemos lograr débilmente acoplados código mediante el uso de interfaces?

Como lo que yo sé que el uso de spring IOC para que sea fácil para los desarrolladores para comprobar el archivo xml para identificar y controlar el flujo de código de proporcionar a las dependencias de forma explícita.

Pero si usamos autowire, el desarrollador tiene que revisar el código para identificar la aplicación que se autowired a clase

lo mismo se podría haber logrado sin el uso de spring framework, por ejemplo, así que ¿por qué necesitamos de la primavera o lo que es la verdadera ventaja de la utilización de los resortes en este caso.

Interface Vehicle {
  .....
}

Class Car implements Vehicle {
  ......
}

Class Example {
  Vehicle v = new Car()
}

O

Class Example {

  @Autowire
  Vehicle v;
  ....
}

2 Respuestas

  • Valerio Vaudi
    30 de junio de 2018

    Esta es una muy buena pregunta!. Ahora, para responder de la mejor manera, creo que un poco de la historia puede ser de ayuda.

    La primavera nació en el EJB época en la que todo estaba configurado en xml y la Primavera era originalmente un marco de java para proporcionar COI POJO base. En esta época era totalmente normal configurar nuestra aplicación en xml y la primavera era una buena opción, ya que podemos beneficios de la COI sin el EJB complejidad y en un proveedor de manera libre, EJB no es totalmente servidor de aplicaciones libre debido a que algunas veces el proveedor de la aplicación, especialmente para el proveedor de configuración específicos trae la aplicación para no totalmente portátil, la primavera fue un éxito framework, ya que era una solución para casi todos los problemas de una aplicación EJB. A continuación, el éxito de marco aporta el marco para crecer e incluir otras capacidades como la de acceso a datos, integración web y otros más integración y capacidades.

    En este año también JavaEE crece y en JavaEE 6 nació CDI Primavera proporcionar un xml, anotación, java config groovy, kotlin dsl bean de configuración con el fin de lograr la flexibilidad y dar un cómodo programación y configuración de modelo, piensa en todas las personas que vienen de JabaEE 6+ que utilizan generalmente @Inject para proporcionar DI. Ahora, dicho todo esto DI capacidad son a discreción del desarrollador.

    En mi opinión el uso de @Autowired es peligroso porque esto le lleva a la Primavera para siempre y muchas cuestión de la DI puede que llegue en caso de que más que un grano se están configurados. Para hacer valer el esfuerzo de todo el equipo de primavera para darle confort y la libre elección de configuración a partir de la Primavera 4.3.x usted puede hacer pensar como

    interface Vehicle {
    
    }
    
    class Car implements Vehicle {
    }
    
    class Example {
    
        private final Vehicle vehicle;
    
        Example(Vehicle vehicle) {
            this.vehicle = vehicle;
        }
    }
    
    
    @Configuration
    class Config{
    
        @Bean
        public Car car(){
            return new Car();
        }
    
        @Bean
        public Example example(Vehicle car){
            return new Example(car);
        }
    }
    
    @RestController
    class Enpoint{
        private final Example example;
    
        Enpoint(Example example) {
            this.example = example;
        }
    

    su código de negocios ahora es totalmente libre de la primavera, incluso el constructor en el resto de controlador no requiere de @Autowired anotación, por supuesto, usted tiene configurarlo.

    Al final puedo decir que usted debe utilizar la Primavera no porque la Primavera proporcionar COI, esto puede ser logrado en una Llanura de Java manera, con Google Jugo de la Primavera, y muchos otros COI marco, pero le sugiero que utilice la Primavera para todos los relacionados con el proyecto que dará muchas capacidades de producción listo como, Spring web para el bloqueo de IO, la Primavera WebFlux para no blockin IO, la Primavera de Integración para EIP, Spring batch para la Empresa por Lotes, de la Primavera en la Nube para la aplicación nativa y más y más, el poder de la Primavera a día es la flexibilidad y la integridad, por supuesto, la ley de spider man es válido! de las grandes potencias, tenemos una gran responsabilidad. La primavera de darle muchas posibilidades pero entonces es responsabilidad del desarrollador para elegir la mejor. Anotación dan velocidad, especialmente durante la creación de prototipos, pero entonces es demasiado rígido. Espero que esta larga reflexión darle una respuesta de tus dudas

  • vipin gupta
    4 de mayo de 2019

    De esta manera, el problema es el Vehículo de la "v" se acopla bien al Coche, en cada cambio de salida del generador puede implicar el cambio de código. Si este código se dispersa por todo de su proyecto, cada cambio de que el Vehículo te hace sufrir en serio.