El concepto de IoC se basa en el pricipio “Don’t call us, we will call you”, de esta forma en el ejemplo, se le esta diciendo a la clase Persona que no instancia la clase Case que alguien mas hará ese trabajo.
Inyección de Dependencias
Inyección de Dependencias ( Dependency Injection) es un patrón de diseño orientado a objetos, en el que se suministran objetos a una clase en lugar de ser la propia clase quien cree el objeto. Esto permite implementar la inversion de control.
De esta forma se logra quitar parte de responsabilidad a las clases, lograr que estas sean mas simples y funcionales, facililta los cambios de implementaciones y permite programar contra interfaces.
Serie PM
lunes, 9 de enero de 2012
viernes, 6 de enero de 2012
Concepto de Inversion de Control
Es un patrón de diseño, el cual resuelve el problema
de alto acoplamiento entre las clases de un sistema.
Que seria el alto acoplamiento?
• La clase Casa esta directamente referenciada en la clase Persona -> Alto Acoplamiento.
• La clase Persona conoce el tipo específico de Casa. Si agregamos un
nuevo tipo de Casa (ej: otra casa de la persona con otros ambientes) va a generar la necesidad de cambiar
la clase Persona.
Solución:
Quitar de la clase Persona la creacion del objeto y darselo a un tercero, y ese tercero es Spring...
de alto acoplamiento entre las clases de un sistema.
Que seria el alto acoplamiento?
public class Persona(){
private Casa casa
public Persona(){
casa = new Casa();
}
}
La clase Persona controla la creación de objeto Casa.• La clase Casa esta directamente referenciada en la clase Persona -> Alto Acoplamiento.
• La clase Persona conoce el tipo específico de Casa. Si agregamos un
nuevo tipo de Casa (ej: otra casa de la persona con otros ambientes) va a generar la necesidad de cambiar
la clase Persona.
Solución:
Quitar de la clase Persona la creacion del objeto y darselo a un tercero, y ese tercero es Spring...
Actualizacion
En vista de que paso mucho tiempo desde las primeras entradas. voy a retomar y ahora con mas frecuencia.
Se va a dejar de lado Spring 2.5 y se empleara Spring 3
Se va a dejar de lado Spring 2.5 y se empleara Spring 3
martes, 21 de junio de 2011
Intruduccion
Bueno, estube desaparecido un tiempito por temas de estudio, hoy retomo.
Comenzando con una breve intruduccion teorica con el objeto de empezar como se debe y para aquellos que siguen este blog sepan donde estamos parados y hacia donde se quiere llegar y en que direccion.
Spring “es un framework de inyección de dependencias”. Actualmente es muy popular, siendo tomado en cuenta como alternativa o reemplazo de los Enterprise JavaBean (EJB).
Surgio inicialmente como una alternativa a los EJB propuestos la especificacion 1.4 de JavaEE, se buscaba separar la logica de negocio, los beans y la persistencia con sus correspondientes accesos a bd, el estandar 1.4 obligaba a mezclarlos y Spring propuso separarlos, en la actualidad spring y java ee 6 comparten muchas caracteristicas y ambos son bastante eficientes.
Spring es un framework liviano y no intrusivo: generalmente los objetos que programamos no tienen dependencias en clases específicas de Spring. Sus características principales son inyección de dependencias y programación orientada a aspectos. Intentaré hacer una breve explicación de ambas sin entrar en detalle de cómo se implementan en Spring (esto vendrá más adelante).
De esta manera, los objetos conocen sus dependencias por su interfaz. Así la dependencia puede ser intercambiada por distintas implementaciones a través del contenedor. En resumen, programaremos orientado a interfaces e inyectaremos las implementaciones a través del contenedor.
La AOP (Aspect-Oriented Programming) busca modularizar estos servicios y aplicarlos de manera declarativa a los componentes que deban afectar.
AOP – provee la implementación de AOP, permitiéndonos desarrollar interceptores de método y puntos de corte para desacoplar el código de las funcionalidades transversales.
DAO - Provee una capa de abstracción sobre JDBC, abstrae el código de acceso a datos de una manera simple y limpia. Tiene una capa de expeciones sobre los mensajes de error provistos por cada servidor específico de base de datos. Además cuenta con manejo de transacciones a través de AOP.
ORM – Provee la integración para las distintas APIs de mapeo objeto-relacional incluyendo JPA, JDO, Hibernate e iBatis.
JEE – Provee integración con aplicaciones Java Enterprise Edition así como servicios JMX, JMS, EJB, etc.
Web – Módulo que aporta clases especiales orientadas al desarrollo web e integración con tecnologías como Struts y JSF. Cuenta con el paquete Spring MVC, una implementación del conocido patrón de diseño aplicando los principios de Spring.
Este blog se centrará inicialmente en Spring MVC.
Comenzando con una breve intruduccion teorica con el objeto de empezar como se debe y para aquellos que siguen este blog sepan donde estamos parados y hacia donde se quiere llegar y en que direccion.
Spring “es un framework de inyección de dependencias”. Actualmente es muy popular, siendo tomado en cuenta como alternativa o reemplazo de los Enterprise JavaBean (EJB).
Surgio inicialmente como una alternativa a los EJB propuestos la especificacion 1.4 de JavaEE, se buscaba separar la logica de negocio, los beans y la persistencia con sus correspondientes accesos a bd, el estandar 1.4 obligaba a mezclarlos y Spring propuso separarlos, en la actualidad spring y java ee 6 comparten muchas caracteristicas y ambos son bastante eficientes.
Spring es un framework liviano y no intrusivo: generalmente los objetos que programamos no tienen dependencias en clases específicas de Spring. Sus características principales son inyección de dependencias y programación orientada a aspectos. Intentaré hacer una breve explicación de ambas sin entrar en detalle de cómo se implementan en Spring (esto vendrá más adelante).
Inyección de dependencias
El objetivo es lograr un bajo acoplamiento entre los objetos de nuestra aplicación. Con este patrón de diseño, los objetos no crean o buscan sus dependencias (objetos con los cuales colabora) sino que éstas son dadas al objeto. El contenedor (la entidad que coordina cada objeto en el sistema) es el encargado de realizar este trabajo al momento de instanciar el objeto. Se invierte la responsabilidad en cuanto a la manera en que un objeto obtiene la referencia a otro objeto.De esta manera, los objetos conocen sus dependencias por su interfaz. Así la dependencia puede ser intercambiada por distintas implementaciones a través del contenedor. En resumen, programaremos orientado a interfaces e inyectaremos las implementaciones a través del contenedor.
Programación orientada a aspectos
Se trata de un paradigma de programación que intenta separar las funcionalidades secundarias de la lógica de negocios. En inglés denominan a estas funcionalidades “cross-cutting concerns” algo que se traduciría como “preocupaciones transversales”. Por ejemplo los loggers, la seguridad, el manejo de transacciones, etc., son funcionalidades que atraviesan nuestro programa en varias abstracciones de éste. Por lo tanto corremos el riesgo de caer en la repetición de código y el acoplamiento entre nuestra lógica de negocios y la implementación de los cross-cutting concerns.La AOP (Aspect-Oriented Programming) busca modularizar estos servicios y aplicarlos de manera declarativa a los componentes que deban afectar.
Módulos de Spring
El diagrama muestra los módulos con los que cuenta Spring (hasta la versión 2.5). En su núcleo (Core) se encuentra el BeanFactory – el contenedor fundamental de Spring y quien se encarga de la inyección de dependencias. El contenedor ApplicationContext se basa en BeanFactory y extiende su funcionalidad con soporte para i18n, eventos de ciclo de vida, validación y mejor integración con AOP.AOP – provee la implementación de AOP, permitiéndonos desarrollar interceptores de método y puntos de corte para desacoplar el código de las funcionalidades transversales.
DAO - Provee una capa de abstracción sobre JDBC, abstrae el código de acceso a datos de una manera simple y limpia. Tiene una capa de expeciones sobre los mensajes de error provistos por cada servidor específico de base de datos. Además cuenta con manejo de transacciones a través de AOP.
ORM – Provee la integración para las distintas APIs de mapeo objeto-relacional incluyendo JPA, JDO, Hibernate e iBatis.
JEE – Provee integración con aplicaciones Java Enterprise Edition así como servicios JMX, JMS, EJB, etc.
Web – Módulo que aporta clases especiales orientadas al desarrollo web e integración con tecnologías como Struts y JSF. Cuenta con el paquete Spring MVC, una implementación del conocido patrón de diseño aplicando los principios de Spring.
Este blog se centrará inicialmente en Spring MVC.
martes, 24 de mayo de 2011
El Ide y el Entorno
Coloco los links para descargar el IDE, el servidor y la libreria de spring 2.5.
IDE (Descargar la version deseada):
Servidor: Tomcat Version 6
(esta es la version para windows)
Nota: al momento de instalar el servidor elegir entre los componenetes a instalar el manager.
y por ultimo la libreria:
Finalmente ir al directorio donde instalamos tomcat, entrar en la carpeta conf, abrir el archivo "tomcat-users.xml" y reemplazar su contenido con lo siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<tomcat-users>
<!--
NOTE: The sample user and role entries below are wrapped in a comment
and thus are ignored when reading this file. Do not forget to remove
<!.. ..> that surrounds them.
-->
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<user password="tomcat" roles="tomcat,role1" username="both"/>
<user password="tomcat" roles="role1" username="role1"/>
<user password="tomcat" roles="manager,admin" username="tomcat"/>
</tomcat-users>
Ahora ingresamos "http://localhost:80" y tendriamos que ver lo siguiente:
En mi caso tomcat lo tengo configurado para el puerto 8081, el puerto lo cambian editando el archivo server.xml
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
cambian el 80 por 8081 o tambien durante la instalacion de tomcat, el wizard pregunta el puerto.
Haciendo click en Tomcat Manager entran al admiinstrador de aplicaciones. El Usuario y contraseña para acceder es tomcat, tomcat respectivamente tal y como esta especificado en archivo tomcat-users.xml.
La instalacion del IDE es sencilla, ya ejecutado hay que ir a window->preferences->user libraries, click en new, ingresan el nombre de la libreria y esta se creara pero vacia.
Click en "addJARs..." y se agregan todas las librerias como se muestra la imagen, click en "ok".
Configurar el IDE para que ocupe tomcat 6.
Ir a window->preferences->Server->Runtime Environment, click en add, seleccionar Tomcat 6.0, luego elegir el directorio de instalacion de tomcat, click en finish.
El entorno esta listo para empezar a programar.
Nota: Si no es mucho pedir quisiera que el que visite deje un pequeño comentario como para saber si en verdad vale la pena e Interesa que desarrolle este tema y seguir con esto.
(Si no tienen cuenta de google o cualquiera de las necesarias para dejar comentarios, aunque sea en el enlace de facebook)
domingo, 22 de mayo de 2011
Avance
Bienvenidos a Serie PM, es este blog o mejor dicho intento de blog, en donde publicaré tutoriales y pequeños proyectos de todo tipo, los mismos no estarán centrados en una plataforma sino que compartiré desarrollos realizados en JAVA SE, EE y ME, WinForms (C#), PHP, ASP y ocasionalmente algo de android, y si hay ganas, proyectos viejos de M.U.G.E.N. La idea es que este sea un blog de consulta de aquellas pequeñas cositas que uno generalmente se pregunta cómo hacerlas. Así mismo dejo un preview de lo que va a ser la primera serie en entradas en el blog: Programación de aplicaciones web J2EE empleando Spring MVC 2.5. (Imagen de Spring Source Tool Suite, IDE oficial basada en Eclipse).
Suscribirse a:
Comentarios (Atom)




