Giter Site home page Giter Site logo

arsw-lab03-a's Introduction

Escuela Colombiana de Ingeniería

Arquitecturas de Software - ARSW

Taller – Principio de Inversión de dependencias, Contenedores Livianos e Inyección de dependencias.

Integrantes:

Nombre Git
Camilo Rincón Rincon10
Galeano Garzón Ersocaut

Compilando el proyecto:

Para compilar el proyecto usaremos el siguiente comando

mvn package

Ejecutando el proyecto:

Para hacer uso del proyecto debe haberlo compilado previamente , para ejecutarlo lo hacemos por medio de la consola usando el siguiente comando:

mvn exec:java -Dexec.mainClass="edu.eci.arsw.springdemo.ui.Main"

Parte I. Ejercicio básico.

Para ilustrar el uso del framework Spring, y el ambiente de desarrollo para el uso del mismo a través de Maven (y NetBeans), se hará la configuración de una aplicación de análisis de textos, que hace uso de un verificador gramatical que requiere de un corrector ortográfico. A dicho verificador gramatical se le inyectará, en tiempo de ejecución, el corrector ortográfico que se requiera (por ahora, hay dos disponibles: inglés y español).

  • (1) Abra las fuentes del proyecto en NetBeans.

  • (2) Revise el archivo de configuración de Spring ya incluido en el proyecto (src/main/resources). El mismo indica que Spring buscará automáticamente los 'Beans' disponibles en el paquete indicado.

    • El archivo de configuración menciona que se debe de importar el framework Spring, esto para poder realizar las inyecciones correspondientes, para esto lo importa desde el archivo XML que se encuentra en la ruta src/main/resources/newSpringXMLConfig.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project-shared-configuration>
        <!--
    This file contains additional configuration written by modules in the NetBeans IDE.
    The configuration is intended to be shared among all the users of project and
    therefore it is assumed to be part of version control checkout.
    Without this configuration present, some functionality in the IDE may be limited or fail altogether.
    -->
        <spring-data xmlns="http://www.netbeans.org/ns/spring-data/1">
            <config-files>
                <config-file>src/main/resources/newSpringXMLConfig.xml</config-file>
            </config-files>
            <config-file-groups/>
        </spring-data>
    </project-shared-configuration>
  • (3) Haciendo uso de la configuración de Spring basada en anotaciones marque con las anotaciones @Autowired y @Service las dependencias que deben inyectarse, y los 'beans' candidatos a ser inyectadas -respectivamente-:

    • GrammarChecker será un bean, que tiene como dependencia algo de tipo 'SpellChecker'.

    Lo primero que realizaremos es mencionar que GrammarChecker es un servicio, para esto usaremos la etiqueta @Service

    @Service
    public class GrammarChecker {
        SpellChecker sc;    
        String x; 
    }
    • EnglishSpellChecker y SpanishSpellChecker son los dos posibles candidatos a ser inyectados. Se debe seleccionar uno, u otro, mas NO ambos (habría conflicto de resolución de dependencias). Por ahora haga que se use EnglishSpellChecker.

      • Lo primero que haremos será definir un identificador de tal manera que al momento de realizar la inyección se elija entre SpanishSpellChecker o EnglishSpellChecker, para esto usaremos las etiquetas Component y Qualifier; de forma analoga se realizara para la otra clase

        package edu.eci.arsw.springdemo;
        
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Component;
        
        @Component
        @Qualifier("english")
        public class EnglishSpellChecker implements SpellChecker {
        
            @Override
            public String checkSpell(String text) {		
                return "Checked with english checker:"+text;
            }
        
                
        }
      • Para cumplir con la inyeccion usaremos las etiquetas Autowired (El equivalente Spring a @Inject sería @Autowired) y Qualifier para definir que tipo de instancia necesitamos, en este caso necesitamos el "EnglishSpellChecker" para eso colocaremos "english" ya que fue el identificador denominado para su instancia.

        @Service
        public class GrammarChecker {
            
            @Autowired
            @Qualifier("english")
            SpellChecker sc;
        
            String x;
        }

      EnglishExec
  • (4) Haga un programa de prueba, donde se cree una instancia de GrammarChecker mediante Spring, y se haga uso de la misma:

public static void main(String[] args) {
    ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
    GrammarChecker gc=ac.getBean(GrammarChecker.class);
    System.out.println(gc.check("la la la "));
}
  • (5) Modifique la configuración con anotaciones para que el Bean ‘GrammarChecker‘ ahora haga uso del la clase SpanishSpellChecker (para que a GrammarChecker se le inyecte EnglishSpellChecker en lugar de SpanishSpellChecker. Verifique el nuevo resultado.
@Service
public class GrammarChecker {
    
    @Autowired
    @Qualifier("spanish")
    SpellChecker sc;

    String x;
}

SpanishExec


Referencias

arsw-lab03-a's People

Contributors

cristianfmendivelso avatar rincon10 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.