java Spring 소나무 결합 고효율 응용 간단한 실례 분석
대상을 향한 개념은 시스템을 깨뜨리고 다시 사용할 수 있는 그룹에 들어가는 좋은 디자인이다.그러나 시스템이 커지면 특히 자바 프로젝트에서 방대한 대상 의존 관계는 긴밀하게 결합되어 대상을 관리하거나 수정하기 어렵다.이 경우 Spring 프레임워크를 핵심 모듈로 사용하여 모든 객체 의존도를 쉽고 효율적으로 관리할 수 있습니다.
출력 생성기의 예
예를 들어 프로젝트에 CSV나 JSON 형식으로 출력된 함수가 있다고 가정해 봅시다.코드가 다음과 같이 보일 수 있습니다.
File : IOutputGenerator.java C
package com.yiibai.output;
public interface IOutputGenerator
{
public void generateOutput();
}
File : CsvOutputGenerator.java C CSV IOutputGenerator 。
package com.yiibai.output.impl;
import com.yiibai.output.IOutputGenerator;
public class CsvOutputGenerator implements IOutputGenerator
{
public void generateOutput(){
System.out.println("Csv Output Generator");
}
}
File : JsonOutputGenerator.java C JSON IOutputGenerator 。
package com.yiibai.output.impl;
import com.yiibai.output.IOutputGenerator;
public class JsonOutputGenerator implements IOutputGenerator
{
public void generateOutput(){
System.out.println("Json Output Generator");
}
}
IOutputGenerator를 호출하는 몇 가지 방법과 Spring을 사용하여 대상이 서로 밀접하게 결합되지 않도록 하는 방법이 있습니다.1. 방법 1C 직접 호출
정상적인 방식으로 직접 그것을 호출한다.
package com.yiibai.common;
import com.yiibai.output.IOutputGenerator;
import com.yiibai.output.impl.CsvOutputGenerator;
/* http://www.manongjc.com/article/1602.html */
public class App
{
public static void main( String[] args )
{
IOutputGenerator output = new CsvOutputGenerator();
output.generateOutput();
}
}
문제가 있다이런 방식으로 이 문제는 "output"가 CsvOutputGenerator와 밀접하게 결합되어 출력 생성의 모든 변화가 코드 변화와 관련될 수 있다는 것이다.만약 이 코드가 프로젝트에 분산되어 있다면, 출력이 생성되는 모든 변화는 당신을 고통스럽게 할 것이다.
방법 2 C 보조 클래스로 호출
보조 클래스를 만들어서 모든 출력을 클래스 내부에 구현하려고 할 수도 있습니다.
package 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 C Spring
이런 상황에서 스프링 의존 주입(DI)은 좋은 선택이다.Spring은 출력을 출력 발생기에 느슨하게 결합시킬 수 있습니다.
OutputHelper 클래스를 더 작게 수정합니다.
package 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;
}
}
Spring bean 구성 파일을 만들고 모든 Java 객체의 종속성을 선언합니다.
<!-- Spring-Common.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="OutputHelper" class="com.yiibai.output.OutputHelper">
<property name="outputGenerator" ref="CsvOutputGenerator" />
</bean>
<bean id="CsvOutputGenerator" class="com.yiibai.output.impl.CsvOutputGenerator" />
<bean id="JsonOutputGenerator" class="com.yiibai.output.impl.JsonOutputGenerator" />
</beans>
스프링을 통해 호출합니다.
package com.yiibai.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yiibai.output.OutputHelper;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"Spring-Common.xml"});
OutputHelper output = (OutputHelper)context.getBean("OutputHelper");
output.generateOutput();
}
}
이제 다른 출력 생성기를 사용하여 Spring XML 파일을 변경하기만 하면 됩니다.코드 없이 수정하지 않고 Spring XML 파일만 수정하면 오류가 줄어듭니다. 결론: Spring 프레임워크 - 이러한 의존 주입(DI)을 대상으로 하는 의존 관계 관리의 유용한 특성이 있어 대형 자바 프로젝트 개발 관리에서 더욱 우아하고 유연하며 유지보수하기 편리하다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.