반전 제어 (IOC로 약식)
간단히 말해서, 물체가 필요할 때, 수동으로 새로운 객체를 필요로 할 필요는 없지만 다른 컨테이너는 당신에게 그것을 제공 할 것입니다. 봄은 IOC 컨테이너입니다.
예를 들어:
봄에는 종종 서비스중인 DAO를 조립해야하며 일반적으로 @autowired 주석을 사용해야합니다. 다음과 유사합니다.
공공 수업 servicempl {@autowired dao dao; public void getData () {dao.getData (); }초기화없이 DAO를 직접 사용하면 널 포인터 예외 가보고됩니다. 봄의 방법은 반사를 통해 필요한 클래스를로드하는 것입니다.
다음은 Spring의 DI와 IOC를 시뮬레이션하는 예입니다.
먼저 스프링을 시뮬레이션하기 위해 두 가지 주석을 작성하십시오.
엔티티 주석은 spring // class @retention (rendentionpolicy.runtime)의 @service @target (elementtype.type)을 나타냅니다. public @interface entity {}는 @autowrid @target (electtype.field)을 나타냅니다. 주석이 설정되면 두 가지 클래스가 만들어집니다.
레인 클래스는 다른 장소에서 날씨 데이터 (데이터베이스 또는 서버)를 얻을 필요성을 나타냅니다.
공개 클래스 비 {public void rain () {System.out.println ( "Raining"); // 편의를 위해 직접 썼습니다}}기상 수업은 얻은 날씨 데이터를 나타냅니다
@EntityPublic 클래스 날씨 {@Resources Rain Rain; // 여기에 비가 온다 }다음은 반사를 통한 직접 주입입니다.
먼저 지정된 패키지 이름을 반복하십시오.이 단계는 먼저 생략됩니다.
먼저, 스프링 콩 컨테이너를 시뮬레이션 할 목록을 작성하면 엔티티 주석이 포함 된 모든 초기 클래스가 초기화됩니다.
public class weather_reflect {list <botorbeffect; // public weather_reflect () {objectlist = new arraylist <botort> ();} // 실제로 여기에서 가장 좋은 방법은 주석을 가진 클래스를 찾는 것입니다. 객체)는 classNotFoundException, 불법 행위 예시, 인스턴티션 렉션, nosuchmethodexception, invocationTargetexception {class <?> clazz = object.getClass (); if (clazz.isannotationPresent (entity.class)) {// entity annotation field [] fields가 있는지 여부에 관계 = clazz.getDeclaredFields (); // (필드 필드 : fields) {if (field.isAnnotationPresent (resources.class)) {// class <?> rainclass = class.forname (field.getType (). getName (), false, thread.) field.set (Object, rainclass.newinstance ()); // rainobjectlist.add (object)에 할당; // 최종적으로 지정된 날씨를 컨테이너에}}}}}}} public list> returnList () {return objectList; // 향후 사용을 위해 컨테이너를 반환합니다.마지막으로 컨트롤러 사용을 직접 시뮬레이션하는 것입니다.
공개 클래스 WeatherPrediction {public static void main (String args [])은 classNotFoundException, nosuchmethodexception, InstantiationException, 불법 행위 exception, WeatherPrediction {WeatherPrediction = New WeatherPrediction (); 새로운 WeatherPrediction (WeatherPrediction.springdo); 호출, 널 포인터 예외 가보고되고 컨테이너는 비 변수를 할당하므로 정상적으로 출력 할 수 있습니다}/* 스프링 시작 프로세스를 시뮬레이션합니다. 실제로 수업을 별도로 쓸 수 있습니다. 이 단계는 컨테이너가해야 할 일이며, 우리는 그것에 대해 걱정할 필요가 없습니다.*/public object springdo ()는 classNotFoundException, nosuchMethodexception, invoctionTargetexception, InstantiationException, 불법 행위 exception {weather_Reflect Weather_Reflect = new weather_Reflect (); // 날씨가 시작될 때 (); // 스캔 할 때 (); // 스캔 할 때 (// step weather_reflect.get_ref (Weather); // 클래스의 변수의 새로운 작동을 컨테이너 개체 객체에 넣고 weather_reflect.returnList (). get (0); return 객체;} 출력 열기 : 비가 내립니다.날씨 예측에는 비에 대한 새로운 수술이 없지만 사용될 수 있습니다. 이것은 스프링을 시뮬레이션하는 가장 간단한 IOC 예입니다. 물론, Spring의 IOC 컨테이너는 스레드 안전을 고려해야하며 다양한 세부 사항이 필요합니다.
요약
위의 내용은 Spring의 IOC 원칙의 간단한 구현에 대한이 기사에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
Spring IOC 원칙에 대한 자세한 설명
Spring 's IOC, AOP 및 코드 예제에 대한 간단한 이해
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!