| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- I'm Sorry
- 컴퓨터과학
- 데이터구조
- 소프트웨어
- 웹개발
- 머신러닝
- 프로그래밍
- Yes
- 자바스크립트
- 사이버보안
- 파이썬
- 프로그래밍언어
- 네트워크
- 데이터베이스
- 컴퓨터비전
- 알고리즘
- 클라우드컴퓨팅
- 디자인패턴
- 데이터과학
- 데이터분석
- 버전관리
- 자료구조
- springboot
- 딥러닝
- 소프트웨어공학
- 빅데이터
- 인공지능
- 네트워크보안
- 보안
- 컴퓨터공학
- Today
- Total
스택큐힙리스트
스프링 프레임워크는 정확히 어떤 용도로 사용되나요? [폐쇄됨] 본문
마감되었습니다. 이 질문은 더 많은 'focused'가 필요합니다. 현재로서는 답변을 받고 있지 않습니다.
'editing this post' 의 문제에 집중하여 이 질문을 개선하고 싶나요?
닫힘 5년 전.
'
Improve this question
'
나는 'Spring' 에 대해 많이 들었다. 사람들이 전 세계에서 Spring이 웹 개발에 좋은 프레임워크라 말하고 있다. 그렇다면 한 마디로 간단히 말해서 Spring Framework는 정확히 어떤 용도로 사용되는 것인가? 왜 일반적인 Java보다 Spring을 사용해야 할까요?
답변 1
기본적으로 Spring은 매우 결합도가 낮은 시스템 구축을 가능하게 해주는 패턴인 'dependency-injection'에 대한 프레임워크입니다.
문제는 다음과 같습니다.
예를 들어, 시스템의 사용자를 나열하고 'UserLister'라는 인터페이스를 선언해야한다고 가정해 봅시다.
'public interface UserLister {
List
}
'
그리고 어쩌면 모든 사용자를 얻기위한 데이터베이스에 접근하는 구현.
'public class UserListerDB implements UserLister {
public List
// DB access code here
}
}
'
당신의 관점에서 인스턴스에 액세스해야합니다 (예제일 뿐이라는 것을 기억하세요):
'public class SomeView {
private UserLister userLister;
public void render() {
List
view.render(users);
}
}
'
주의할 점은 위의 코드에서 변수 'userLister' 를 초기화하지 않았습니다. 우리는 어떻게 해야 할까요? 이렇게 명시적으로 객체를 초기화하면 될까요?
'UserLister userLister = new UserListerDB();
'
...DB에 접근하는 클래스의 구현과 함께 뷰를 결합합니다. 만약에 DB 구현체를 콤마로 구분된 파일에서 사용자 목록을 가져오는 다른 구현체로 변경하고 싶다면 (예시이니까 기억해두세요), 그 경우에는 다시 코드로 가서 위의 줄을 다음과 같이 변경할 것입니다:
'UserLister userLister = new UserListerCommaSeparatedFile();
'
이것은 이처럼 작은 프로그램에는 문제가 없지만... 수백 개의 뷰와 유사한 수의 비즈니스 클래스가 있는 프로그램에서는 어떻게 될까요? 유지보수가 악몽이 됩니다!
스프링 (의존성 주입) 접근법
당신은 컴퓨터 전문가입니다. 이를 XML 파일이나 주석을 사용하여 클래스를 연결하는 것입니다. 이렇게하면 모든 객체가 Spring에 의해 인스턴스화되고 초기화되며 (서블릿, 웹 프레임워크, 비즈니스 클래스, DAO 등등) 올바른 위치에 주입됩니다.
봄 예제로 돌아가서, 우리는 'userLister' 필드를 위한 세터를 가져야하며 다음과 같은 XML 파일이 있어야합니다.
'
'
더 간단하게 말하면, 우리의 뷰 클래스에서 '@Inject'를 사용하여 필드를 주석 처리하십시오.
'@Inject
private UserLister userLister;
'
이렇게하면 뷰가 생성될 때 마법 같이 작동 준비가 완료될 것입니다. 'UserLister'
'List
// without adding any line of code
'
정말 멋지네요! 그렇지 않나요?
당신이 다른 구현을 사용하고 싶다면 그 'UserLister' 인터페이스를 다른 XML로 변경하면 됩니다.
만약 준비된 'UserLister' 구현체가 없다면 어떻게 될까요? 'UserLister' 의 일시적인 모의 구현을 프로그래밍하여 뷰의 개발을 용이하게 해보세요.
만약 더 이상 스프링을 사용하고 싶지 않다면 어떨까요? 그냥 사용하지 않으면 됩니다! 여러분의 애플리케이션은 그와 결합되어 있지 않습니다. 'Inversion of Control' 상태에서는 애플리케이션이 프레임워크를 제어하며, 프레임워크가 애플리케이션을 제어하지 않는다라고 말합니다.
여기에는 의존성 주입에 대한 다른 옵션이 있습니다. 내 의견으로는 Spring을 유명하게 만든 것은 그 간결함, 우아함 및 안정성 외에도 SpringSource의 개발자들이 여러 가지 다른 일반적인 프레임워크와 Spring을 침범하지 않고 통합하는 데 도움이되는 많은 많은 POJO를 프로그래밍했기 때문입니다. 또한 Spring에는 Spring MVC, Spring WebFlow, Spring Security와 다시 한 번 긴 등등의 목록과 같은 여러 좋은 하위 프로젝트가 있습니다.
어쨌든, 나는 의존성 주입(Dependency Injection)과 제어의 역전(Inversion of Control)에 대해 읽어 보도록 권장한다. 왜냐하면 그는 나보다 더 잘 설명해주기 때문이다. 기초를 이해한 후에는 내 의견으로는록, 이것은 지금까지 최고의 스프링 책이었다.
답변 2
스프링 프레임워크는 무엇을 위한 것인가요?스프링 프레임워크는 자바 기반의 애플리케이션 개발을 위한 오픈 소스 프레임워크입니다. 이 프레임워크는 주로 엔터프라이즈급 애플리케이션과 웹 애플리케이션을 개발하고 구축하는데 사용됩니다. 스프링은 경량이며, 확장 가능하며, 재사용 가능한 코드를 작성하는데 도움이 되는 다양한 기능을 제공합니다.
스프링 프레임워크의 핵심적인 기능은 제어 역전(IoC)과 의존성 주입(DI)입니다. 이러한 기능은 개발자에게 객체 간의 결합도를 낮추고, 유연하고 테스트 용이한 코드를 작성할 수 있는 기반을 제공합니다. 또한 스프링은 관련 기술과 라이브러리와의 쉬운 통합을 지원하며, 개발자들이 빠르게 개발에 집중할 수 있도록 도와줍니다.
스프링 프레임워크를 사용하면 개발자들은 객체 지향 프로그래밍의 개념을 적용하여 애플리케이션을 구성할 수 있습니다. 또한 스프링은 관리되는 환경에서의 엔터프라이즈급 애플리케이션 개발에 많은 이점을 제공합니다. 스프링은 다양한 데이터 액세스 기술과의 통합, 일관된 트랜잭션 관리, 보안 기능, 웹 애플리케이션의 개발 및 배포 등을 지원합니다.
뿐만 아니라, 스프링은 테스트의 용이성을 제공하여 개발자가 단위 테스트와 통합 테스트를 쉽게 수행할 수 있습니다. 또한 스프링의 모듈화 시스템은 애플리케이션을 작은 단위로 분리하여 개발하고, 필요할 때 컴포넌트를 추가하거나 제거하는 유연성을 제공합니다.
스프링 프레임워크는 오픈 소스 기반의 프로젝트이므로, 커뮤니티에서 다양한 피드백과 지원을 받을 수 있습니다. 이는 개발자들이 문제를 해결하고 더 나은 코드를 작성하는 데 큰 도움이 됩니다.
결론적으로, 스프링 프레임워크는 자바 기반의 애플리케이션 개발을 위한 강력하고 유연한 도구입니다. 모듈화, 관리되는 환경에서의 개발, 테스트 용이성 등 다양한 기능을 제공하여 개발자들이 효율적이고 품질 높은 애플리케이션을 구축할 수 있도록 도와줍니다. 스프링을 사용하여 안정적이고 확장 가능한 애플리케이션을 개발하고자 하는 개발자들에게 강력한 도구가 될 것입니다.