프로그래밍 언어/Spring MyBatis

Spring Framework의 장점

Rateye 2021. 6. 28. 10:15
728x90
반응형
질문 : Spring Framework는 정확히 무엇입니까?

저는 Spring 에 대해 많이 듣습니다. 사람들은 Spring이 웹 개발을위한 좋은 프레임 워크라고 웹 전반에 걸쳐 말합니다. 간단히 말해서 Spring Framework는 정확히 무엇입니까? 평범한 자바를 통해 왜 사용해야하나요?

답변

기본적으로 Spring은 매우 분리 된 시스템을 구축 할 수있는 패턴 인

예를 들어 시스템 사용자를 나열하고 UserLister 라는 인터페이스를 선언해야한다고 가정합니다.

public interface UserLister {
    List<User> getUsers();
}
    

그리고 모든 사용자를 얻기 위해 데이터베이스에 액세스하는 구현 일 수도 있습니다.

public class UserListerDB implements UserLister {
    public List<User> getUsers() {
    // DB access code here
    }
}

보기에서 인스턴스에 액세스해야합니다 (예 : 기억하세요).

public class SomeView {
    private UserLister userLister;
    
    public void render() {
        List<User> users = userLister.getUsers();
        view.render(users);
    }
}
          

userLister 변수를 초기화하지 않았습니다. 우리는 무엇을해야합니까? 다음과 같이 객체를 명시 적으로 인스턴스화하면 :

UserLister userLister = new UserListerDB();
                                                

...보기를 DB에 액세스하는 클래스의 구현과 결합합니다. DB 구현에서 쉼표로 구분 된 파일에서 사용자 목록을 가져 오는 다른 구현으로 전환하려면 어떻게해야합니까 (예제임을 기억하십시오)? 이 경우 코드로 다시 이동하여 위 줄을 다음과 같이 변경합니다.

UserLister userLister = new UserListerCommaSeparatedFile();
                                                

이와 같은 작은 프로그램에서는 문제가 없지만 ... 수백 개의 뷰와 비슷한 수의 비즈니스 클래스가있는 프로그램에서 어떤 일이 발생합니까? 유지 관리는 악몽이됩니다!

무엇 봄이하는 것은 XML 파일이나 주석, 모든 객체 인스턴스화 및 스프링에 의해 초기화하고 오른쪽 장소 (서블릿, 웹 프레임 워크, 비즈니스 클래스, DAO를, 등, 등, 등의 주입이 방법을 사용하여 클래스를 묶을 것입니다 ...).

Spring의 예제로 돌아가서 userLister 필드에 대한 setter가 있고 다음과 같은 XML 파일이 있어야합니다.

<bean id="userLister" class="UserListerDB" />

<bean class="SomeView">
<property name="userLister" ref="userLister" />
</bean>
                          

@Inject 뷰 클래스에있는 파일에 주석을 추가합니다.

@Inject
private UserLister userLister;
                                                    

이렇게하면 뷰가 생성 될 때 마술처럼 UserLister 가 작동 할 준비가됩니다.

List<User> users = userLister.getUsers();// This will actually work
// without adding any line of code

대단합니다! 그렇지 않습니까?

  • UserLister 인터페이스의 다른 구현을 사용하려면 어떻게해야합니까? XML을 변경하십시오.
  • UserLister 구현이 준비되지 않은 경우 어떻게합니까? UserLister 의 임시 모의 구현을 프로그래밍하고 뷰 개발을 용이하게합니다.
  • 더 이상 Spring을 사용하지 않으려면 어떻게합니까? 그냥 사용하지 마세요! 응용 프로그램이 여기에 연결되어 있지 않습니다. Inversion of Control 은 "프레임 워크가 애플리케이션을 제어하는 것이 아니라 애플리케이션이 프레임 워크를 제어합니다"라고 말합니다.

거기에 의존성 주입에 대한 다른 옵션이 있습니다. 제 생각에 Spring을 단순성, 우아함 및 안정성 외에도 유명하게 만든 것은 SpringSource의 사람들이 Spring을 다른 많은 공통 프레임 워크와 통합하는 데 도움이되는 많은 POJO를 프로그래밍했다는 것입니다. 응용 프로그램에 침입합니다. 또한 Spring에는 Spring MVC, Spring WebFlow, Spring Security와 같은 몇 가지 좋은 하위 프로젝트가 있으며 다시 한 번 다양한 기타 목록이 있습니다.

도움이 되었기를 바랍니다. 어쨌든, 나는 그가 나보다 더 잘하기 때문에 의존성 주입과 제어의 반전에 관한 Martin Fowler의 기사를 읽는 것이 좋습니다. 기본 사항을 살펴 가지고 이해 한 후봄 문서를 내 의견으로는, 지금까지 최고의 봄 책이 될하는 데 사용됩니다.

출처 : https://stackoverflow.com/questions/1061717/what-exactly-is-spring-framework-for
728x90
반응형