Sök…


Introduktion till Spring Core

Våren är en enorm ram, så vårramen har delats upp i flera moduler som gör våren lätt. Några viktiga moduler är:

  1. Spring Core
  2. Spring AOP
  3. Spring JDBC
  4. Vårtransaktion
  5. Spring ORM
  6. Spring MVC

Alla moduler i Spring är oberoende av varandra förutom Spring Core. Eftersom vårkärnan är basmodulen, så måste vi i alla moduler använda vårkärnan

Spring Core

Spring Core pratar allt om beroendehantering.Det betyder att om några godtyckliga klasser tillhandahålls till våren kan våren hantera beroende.

Vad är ett beroende:
Från projektets synvinkel, i ett projekt eller en applikation finns flera klasser där med olika funktioner. och varje klasser krävde någon funktion av andra klasser.

Exempel:

class Engine {

  public void start() {
    System.out.println("Engine started");
  }    
}

class Car {

  public void move() {
    // For moving start() method of engine class is required
  }
}

Här krävs klassmotor av klassbil så att vi kan säga klassmotor är beroende av klassbil, så istället för att vi hanterar beroendet genom arv eller skapar objekt som fallows.

Av arv:

class Engine {

  public void start() {
    System.out.println("Engine started");
  }
}

class Car extends Engine {

  public void move() {
    start(); //Calling super class start method,
  }
}

Genom att skapa objekt för beroende klass:

class Engine {

  public void start() {
    System.out.println("Engine started");
  }    
}

class Car {

  Engine eng = new Engine();
 
  public void move() {
   eng.start();
  }
}

Så istället för att vi hanterar beroende mellan klasser tar vårkärnan ansvaret beroendehantering. Men en del regel är där, klasserna måste utformas med någon designteknik som är strategi designmönster.

Förstå hur våren hanterar beroende?

Låt mig skriva en kodkod som visar helt löst kopplad, sedan kan du lätt förstå hur vårkärnan hanterar beroendet internt. Tänk på ett scenario, online-företag Flipkart är där, det använder vissa gånger DTDC eller Blue Dart budtjänst, så låt mig utforma en applikation som visar komplett löst kopplad. Eclipse Directory som fallows:

ange bildbeskrivning här

//Interface
package com.sdp.component;

public interface Courier {
    public String deliver(String iteams,String address);

}

// implementeringskurser

  package com.sdp.component;

public class BlueDart implements Courier {

    
    public String deliver(String iteams, String address) {
        
        return iteams+ "Shiped to Address "+address +"Through BlueDart";
    }

}

package com.sdp.component;

public class Dtdc implements Courier {

    
    public String deliver(String iteams, String address) {
        return iteams+ "Shiped to Address "+address +"Through Dtdc";    }

}

// Komponentklass

package com.sdp.service;

import com.sdp.component.Courier;

public class FlipKart {
    private Courier courier;

    public void setCourier(Courier courier) {
        this.courier = courier;
    }
    public void shopping(String iteams,String address)
    {
        String status=courier.deliver(iteams, address);
        System.out.println(status);
    }

}

// Fabriksklasser för att skapa och returnera objekt

package com.sdp.util;

import java.io.IOException;
import java.util.Properties;

import com.sdp.component.Courier;

public class ObjectFactory {
private static Properties props;
static{
    
    props=new Properties();
    try {
        props.load(ObjectFactory.class.getClassLoader().getResourceAsStream("com//sdp//common//app.properties"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
}
public static Object getInstance(String logicalclassName)
{
    Object obj = null;
    String originalclassName=props.getProperty(logicalclassName);
    try {
         obj=Class.forName(originalclassName).newInstance();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return obj;
}
    
    }

// egenskapsfil

BlueDart.class=com.sdp.component.BlueDart
Dtdc.class=com.sdp.component.Dtdc
FlipKart.class=com.sdp.service.FlipKart

// Testklass

package com.sdp.test;

import com.sdp.component.Courier;
import com.sdp.service.FlipKart;
import com.sdp.util.ObjectFactory;

public class FlipKartTest {
    public static void main(String[] args) {
        Courier courier=(Courier)ObjectFactory.getInstance("Dtdc.class");
        FlipKart flipkart=(FlipKart)ObjectFactory.getInstance("FlipKart.class");
        flipkart.setCourier(courier);
        flipkart.shopping("Hp Laptop", "SR Nagar,Hyderabad");
        
    }

}

Om vi skriver den här koden kan vi manuellt uppnå lös koppling, detta är tillämpligt om alla klasser vill ha antingen BlueDart eller Dtdc, men om någon klass vill ha BlueDart och någon annan klass vill ha Dtdc så kommer den igen att vara tätt kopplad, så istället för vi skapa och hantera beroendeinsprutning Vårkärnan tar ansvaret för att skapa och hantera bönorna, Hope Detta kommer att vara till hjälp, i nästa exempel kommer vi att se den! st-applikationen på Spring core med deitals



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow