spring
Spring Core
Поиск…
Введение в весеннее ядро
Весна - обширная основа, поэтому весна-рама была разделена на несколько модулей, что облегчает весны весны. Некоторые важные модули:
- Spring Core
- Весенний АОП
- Весна JDBC
- Весенняя сделка
- Весенняя ОРМ
- Spring MVC
Все модули пружины независимы друг от друга, кроме Spring Core. Поскольку пружинное ядро является базовым модулем, поэтому во всем модуле мы должны использовать Spring Core
Spring Core
Spring Core говорит все об управлении зависимостями. Это означает, что если произвольные классы предоставлены весной, Spring может управлять зависимостью.
Что такое зависимость:
С точки зрения проекта, в проекте или приложении несколько классов существуют с разной функциональностью. и для каждого класса требуется некоторая функциональность других классов.
Пример:
class Engine {
public void start() {
System.out.println("Engine started");
}
}
class Car {
public void move() {
// For moving start() method of engine class is required
}
}
Здесь класс Engine требуется машиной класса, поэтому мы можем сказать, что двигатель класса зависит от класса Car, поэтому вместо того, чтобы управлять этими зависимостями по наследству или создавать объекты в качестве паров.
По наследству:
class Engine {
public void start() {
System.out.println("Engine started");
}
}
class Car extends Engine {
public void move() {
start(); //Calling super class start method,
}
}
Создавая объект зависимого класса:
class Engine {
public void start() {
System.out.println("Engine started");
}
}
class Car {
Engine eng = new Engine();
public void move() {
eng.start();
}
}
Поэтому вместо того, чтобы мы управляем зависимостью между классами, весной ядро принимает ответственность за управление зависимостями. Но есть некоторые правила, классы должны быть спроектированы с использованием некоторой методики проектирования, которая является шаблоном проектирования стратегии.
Понимание того, как Spring управляет зависимостью?
Позвольте мне написать фрагмент кода, который показывает полностью слабо связанную. Тогда вы можете легко понять, как Spring Core управляет зависимостью внутри. Рассмотрим сценарий, онлайн-бизнес Flipkart существует, он использует несколько раз курьерскую службу DTDC или Blue Dart, поэтому позвольте мне разработать приложение, которое показывает, что он полностью связан. Каталог Eclipse как паров:
//Interface
package com.sdp.component;
public interface Courier {
public String deliver(String iteams,String address);
}
// классы реализации
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"; }
}
// Компонента
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);
}
}
// Заводские классы для создания и возврата объекта Object
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;
}
}
// файл свойств
BlueDart.class=com.sdp.component.BlueDart
Dtdc.class=com.sdp.component.Dtdc
FlipKart.class=com.sdp.service.FlipKart
// Тест-класс
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");
}
}
Если мы напишем этот код, тогда мы можем вручную получить свободную связь, это применимо, если все классы хотят либо BlueDart, либо Dtdc. Но если какой-то класс хочет, чтобы BlueDart и какой-то другой класс захотели Dtdc, то снова он будет тесно связан, поэтому вместо того, чтобы мы создание и управление инъекцией зависимостей. Spring core берет на себя ответственность за создание и управление бобами. Надеюсь, это будет полезно. В следующем примере мы увидим приложение! st на Spring core с deitals