El papel y la diferencia entre BeanFactory y FactoryBean en SpringEste verano, es posible que haya escuchado mucha discusión sobre Spring Framework. En este artículo, intentaré explicar qué puede hacer Spring y cómo creo que puede ayudarle a desarrollar aplicaciones J2EE. ¿Otro marco? Quizás esté pensando en "sólo otro marco". ¿Por qué molestarse en leer este artículo o descargar Spring Framework cuando ya existen muchos frameworks J2EE de código abierto (y propietarios)? Creo que Spring es único por las siguientes razones. Spring se centra en proporcionar una forma de gestionar objetos comerciales. .Spring tiene una arquitectura en capas, lo que significa que puede elegir usar cualquier parte de forma independiente, y su arquitectura permanece inherentemente estable. Por lo tanto, obtienes el máximo valor de lo que aprendes. Por ejemplo, puede optar por utilizar sólo Spring para simplificar el uso de JDBC o para gestionar todos los objetos comerciales. .Está diseñado desde abajo hacia arriba para ayudarle a escribir código que sea fácil de probar. Spring es un marco ideal para la ingeniería basada en pruebas. Spring no necesita proporcionar más de un marco para su proyecto. Spring es una solución integral para la mayoría de los problemas de infraestructura asociados con las aplicaciones típicas. También aborda cuestiones que otros marcos no consideran. Aunque Spring sólo ha sido un proyecto de código abierto desde febrero de 2003, tiene una larga historia. Este proyecto de código abierto surgió a partir del código base de mi libro Expert One-on-One J2EE Design and Development, publicado a finales de 2002. Este libro muestra la infraestructura detrás de Spring. Sin embargo, este concepto de infraestructura se remonta a principios de la década de 2000 y refleja mi experiencia en el desarrollo de infraestructura para muchos proyectos comerciales exitosos. Spring ha estado alojado en SourceForge desde enero de 2003. Actualmente hay 10 desarrolladores, 6 de los cuales son desarrolladores altamente comprometidos y motivados. Beneficios arquitectónicos de Spring Antes de entrar en detalles, echemos un vistazo a algunos de los beneficios que Spring puede aportar a sus proyectos: .NET Framework 2.0, .NET Framework 3.0, .NET Framework 4.0 y .NET Framework 5.0. Ya sea que elija utilizar EJB o no, Spring puede organizar sus objetos de nivel medio de manera eficiente. Si solo usa Struts u otros marcos que incluyen API específicas de J2EE, encontrará que Spring se enfoca en problemas heredados y .Spring lo ayuda a resolverlos. Spring puede eliminar el uso excesivo de Singleton en muchos proyectos. En mi experiencia, este es un problema importante que reduce la capacidad de prueba y la naturaleza orientada a objetos del sistema. .Spring elimina la necesidad de archivos personalizados que contengan propiedades en varios formatos que se puedan configurar de manera consistente en todas las aplicaciones y proyectos. ¿Alguna vez se ha sentido confundido y no ha podido encontrar una palabra clave de propiedad mágica o una propiedad del sistema en una clase en particular, para la cual tuvo que leer el Javadoc o incluso el código fuente? Con Spring, solo necesitas mirar las propiedades de la clase JavaBean. El uso de controles de inversión (que se analizan a continuación) puede ayudar a lograr esta simplificación. .Spring reduce los costos de programación a casi cero al promover buenas prácticas de programación a través de interfaces en lugar de clases. Spring está diseñado para que las aplicaciones creadas con él tengan la menor cantidad de dependencias posible en su API. La mayoría de los objetos comerciales en las aplicaciones Spring no dependen de Spring. Las aplicaciones creadas con Spring se prueban unitariamente fácilmente.
.Spring hace que el uso de EJB sea una opción de implementación en lugar de un requisito arquitectónico de la aplicación. Puede optar por utilizar POJO o EJB nativos para implementar la interfaz empresarial sin afectar el código de llamada. .Spring puede ayudarte a resolver muchos problemas sin usar EJB. Spring puede proporcionar un reemplazo para los EJB, que son adecuados para muchas aplicaciones de red. Por ejemplo, Spring puede proporcionar transacciones declarativas usando AOP sin usar un contenedor EJB, e incluso puede implementar JTA si solo necesita tratar con una única base de datos. Ya sea que utilice JDBC o un producto de mapeo O/R como Hibernate, Spring proporciona un marco consistente para el acceso a datos. Spring realmente te permite resolver problemas con la solución más simple. Estas características son de gran valor. ¿Qué puede hacer la primavera? Spring ofrece muchas funciones y rápidamente le mostraré cada uno de sus aspectos principales. Descripción de la tarea: Primero, definamos el alcance de Spring. Aunque el alcance de Spring es amplio, tenemos una idea clara de lo que debe y no debe cubrir. El objetivo principal de Spring es hacer que J2EE sea fácil de usar y promover buenas prácticas de programación. Spring no volverá a desarrollar el contenido existente. Por lo tanto, no hay paquetes de registro, grupos de conexiones ni programación de transacciones distribuidas en Spring. Estos los proporcionan proyectos de código abierto (como Commons Logging para todos los resultados de registro o Commons DBCP para la agrupación de conexiones de datos) o los proporciona su servidor de aplicaciones. Por la misma razón, no proporcionamos una capa de mapeo O/R, para lo cual existen buenas soluciones como Hibernate y JDO. El objetivo de Spring es hacer que las tecnologías existentes sean más fáciles de usar. Por ejemplo, si bien no tenemos una coordinación de transacciones subyacente, proporcionamos una capa de abstracción para cubrir JTA o cualquier otra estrategia de transacción. Spring no competirá directamente con otros proyectos de código abierto a menos que sintamos que tenemos algo nuevo que ofrecer. Por ejemplo, como muchos desarrolladores, no estábamos satisfechos con Struts y sentimos que el marco web MVC tenía margen de mejora. En algunas áreas, como los contenedores IoC livianos y los marcos AOP, Spring tiene competidores directos, pero no existen soluciones más populares en estas áreas. (Spring es pionera en estas áreas). Spring también se beneficia de su consistencia inherente. Todos los desarrolladores cantan la misma canción, la idea básica sigue siendo el diseño y desarrollo J2EE uno a uno por parte de expertos. Y hemos podido utilizar algunos conceptos clave, como el control de inversión, para abordar múltiples áreas. Spring es portátil entre servidores de aplicaciones. Por supuesto, garantizar la portabilidad siempre es un desafío, pero evitamos cualquier especificidad de plataforma o no estandarización y brindamos soporte a los usuarios que utilizan WebLogic, Tomcat, Resin, JBoss, WebSphere y otros servidores de aplicaciones. Inversión de contenedores de control En el corazón del diseño de Spring se encuentra el paquete org.springframework.beans, diseñado para funcionar con JavaBeans. Los usuarios generalmente no utilizan este paquete directamente, pero es la base para funciones adicionales. El siguiente nivel superior de abstracción es la "fábrica de frijoles". Una fábrica Spring Bean es una fábrica de propósito general que proporciona objetos por nombre y gestiona las relaciones entre objetos. Bean Factory admite los siguientes dos modos de objeto singleton: en este modo, hay una única instancia de objeto jerárquico, que tiene un nombre específico y se recupera durante la búsqueda. Este es el modo predeterminado y el modo más utilizado. Es el patrón ideal para objetos sin estado. .Prototipo: en este modo, se crea un objeto independiente para cada recuperación. Esto se puede utilizar, por ejemplo, para permitir a los usuarios poseer sus propios objetos.