자바 스프링 느슨한 커플 링
객체 지향 개념은 시스템을 재사용 가능한 객체 그룹으로 나누는 좋은 설계입니다. 그러나 시스템이 점점 커지면 특히 Java 프로젝트에서는 거대한 객체 의존성이 항상 엄격하게 결합되어 객체를 관리하거나 수정하기가 어렵습니다. 이 경우 스프링 프레임 워크를 핵심 모듈로 사용하여 모든 객체 종속성을 쉽고 효율적으로 관리 할 수 있습니다.
출력 생성기의 예
프로젝트에 CSV 또는 JSON 형식의 기능 출력이 있다고 가정 해 봅시다. 코드는 다음 예처럼 보일 수 있습니다.
파일 : ioutputGenerator.java 출력 생성기 인터페이스 패키지 com.yiibai.output; public interface ioutputgenerator {public void generateoutput ();} 파일 : csvoutputgenerator.java csv 출력 생성기는 ioutputgenerator 인터페이스를 구현하는 데 사용됩니다. package com.yiibai.output.impl; import com.yiibai.output.ioutputgenerator; public class csvoutputgenerator implements ioutputgenerator {public void generateoutput () {System.out.println ( "CSV 출력 생성기"); }} 파일 : jsonOutputGenerator.java json 출력 생성기는 ioutputGenerator 인터페이스를 구현하는 데 사용됩니다. package com.yiibai.output.impl; import com.yiibai.output.ioutputGenerator; public class jsonoutputgenerator implements ioutputGenerator {public void generateoutput () {System.out.println ( "JSON 출력 발전기"); }} ioutputgenerator를 호출하는 방법에는 여러 가지가 있으며 물체가 서로 밀접하게 연결되는 것을 피하기 위해 스프링을 사용하는 방법이 있습니다.
1. 방법 1은 직접 호출됩니다
정상적인 방법은 직접 전화하는 것입니다.
패키지 com.yiibai.common; import com.yiibai.output.ioutputGenerator; import com.yiibai.output.impl.csvoutputgenerator;/ * http://www.manongjc.com/article/1602.html */public class void main (string []) {ioutgerator class void main (string). csvoutputgenerator (); output.generateOutput (); }}문제가 있습니다
이러한 방식으로, 문제는 "출력"이 CSVOutputGenerator에 밀접하게 결합되며 출력에 의해 생성 된 모든 변경에는 코드 변경이 포함될 수 있다는 것입니다. 이 코드가 프로젝트 전체에 흩어져있는 경우 출력에 의해 생성 된 모든 변경으로 인해 어려움을 겪게됩니다.
방법 2 도우미 클래스로 호출하십시오
어쩌면 클래스 내에서 모든 출력을 구현하기 위해 도우미 클래스를 만들고 싶을 수도 있습니다.
패키지 com.yiibai.output; import com.yiibai.output.ioutputGenerator; import com.yiibai.output.impl.csvoutputgenerator; public class outputhelper {ioutputgenerator outputgenerator; public outputhelper () {outputgenerator = new csvoutputgenerator (); } public void generateOutput () {outputGenerator.generateOutput (); }} 도우미 수업을 통해 전화하십시오
package com.yiibai.common; import com.yiibai.output.outputhelper; public class app {public static void main (String [] args) {outputhelper output = new Outputhelper (); output.generateOutput (); }}문제가 있습니다
이것은 전보다 더 우아하게 보이지만 도우미 클래스를 관리하는 것만으로도 헬퍼 클래스는 여전히 CSVOutputGenerator와 밀접하게 연결되어 있으며 출력에 의해 생성 된 모든 변경에는 작은 코드 변경이 포함됩니다.
방법 3 스프링
이 경우 스프링 의존성 주입 (DI)이 좋은 선택입니다. 스프링을 사용하면 출력 생성이 출력 생성기에 느슨하게 결합 될 수 있습니다.
Outputhelper 클래스의 수정이 더 작습니다.
패키지 com.yiibai.output; import com.yiibai.output.ioutputgenerator; public class outputhelper {ioutputgenerator outputgenerator; public void generateoutput () {outputGenerator.generateOutput (); } public void setoutputGenerator (ioutputGenerator outputGenerator) {this.outputGenerator = outputGenerator; }} 스프링 빈 구성 파일을 만들고 여기에서 모든 Java 객체 종속성을 선언하십시오.
<!-Spring-Common.xml-> <Beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xsi : skemalo 양이온 = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.xsd"> <bean id = "outputhelper"> <property name = "outputgenerator"ref = "csvoutputgenerator" /> < /bean> <bean id = "csvoutputgenerator" /> <bean id = "jsonoutputgenerator" /> < /beans>
봄을 통해 전화하십시오
package com.yiibai.common; import org.springframework.context.applicationcontext; import org.springframework.context.support.support.support.support.support.support.support.support.support.support.support.support.support.support.support.support.support.classpathxmlapplicationcontext; import com.yiibai.outputepput.outputhelper; public static void main (string [] Applicats) classPathXmlApplicationContext (new String [] { "spring-common.xml"}); OutPuthelper output = (OutPuthelper) context.getBean ( "OutPuthelper"); output.generateOutput (); }} 이제 다른 출력 생성기를 사용하여 스프링 XML 파일을 변경하십시오. 무수정 수정없이 스프링 XML 파일 만 수정하면 오류가 적습니다.
결론 : Spring Framework-이 의존성 주입 (DI)은 객체 의존성 관리에 유용하여 대규모 Java 프로젝트의 개발 관리에서 더 우아하고 유연하며 유지하기가 쉽습니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!