📌 스프링 사용의 장점은 무엇인가?
스프링(Spring)은 Java 기반의 오픈 소스 프레임워크로, 다양한 기능을 제공하여 개발자들이 효과적으로 엔터프라이즈급 애플리케이션을 개발할 수 있도록 도와준다.
[ 경량화 ]
- 스프링은 경량화된 프레임워크로서 필요한 부분만 선택적으로 사용할 수 있다.
- 필요한 모듈만 사용하여 애플리케이션을 더 가볍게 만들 수 있다.
[ 의존성 주입 ]
- 스프링은 의존성 주입을 통해 객체 간의 결합도를 낮춘다.
- 이는 유지보수성을 높이고 테스트 용이성을 제공하며 코드 재사용성을 향상시킨다.
[ 풍부한 생태계 ]
- 스프링은 다양한 서드파티 라이브러리 및 프로젝트와 통합이 잘 되어 있어 다양한 기능을 지원하고 개발 생산성을 향상시킨다.
[Spring] Spring이란?
개발자들의 봄이 왔다! Spring이란 ? - Spring은 Java 기반의 어플리케이션 프레임워크로, Java EE의 스펙을 구현한 EJB가 복잡하고 성능이 느린것을 탈피하고자 만들어진 오픈 소스 프레임워크이다. - EJ
dev-density.tistory.com
📌 AOP란 무엇인가?
AOP(Aspect-Oriented Programming)는 관점 지향 프로그래밍의 약자로, 프로그램의 핵심 기능과 횡단 관심사를 분리하여 모듈화하는 프로그래밍 패러다임이다.
횡단 관심사는 여러 모듈이나 클래스에 걸쳐 공통적으로 적용되는 로깅, 트랜잭션 관리, 보안, 에러 처리 등과 같은 부가적인 기능을 말한다.
[Spring] Spring AOP란?
Spring AOP AOP(Aspect Oriented Programming) AOP는 관점 지향 프로그래밍이라고 불린다. 관점 지향은 객체 지향, 절차 지향 과는 또 다른 패러다임으로 특정 로직을 기준으로 핵심적인 관점, 부가적인 관점
dev-density.tistory.com
📌 IOC란 무엇인가?
IOC(Inversion of Control)는 제어의 역전이며 소프트웨어 디자인의 한 개념이다.
IOC는 객체의 생성과 생명주기의 관리를 개발자가 직접하지 않고, 외부의 컨테이너가 대신 수행하는 디자인 패턴이다.
개발자가 코드 내에서 객체를 직접 생성하는 것이 아닌 외부에서 객체를 주입받아 사용하는 방식이다.
[Spring] Spring IoC / DI 란?
[Spring] Spring이란? 개발자들의 봄이 왔다! Spring이란 ? - Spring은 Java 기반의 어플리케이션 프레임워크로, Java EE의 스펙을 구현한 EJB가 복잡하고 성능이 느린것을 탈피하고자 만들어진 오픈 소스 프
dev-density.tistory.com
📌 스프링의 메인 모듈은 무엇인가요?
스프링 메인 모듈은 Spring-Core 이다. 아래와 같은 기능들을 제공한다.
[ IoC 컨테이너 구현 ]
- BeanFactory 및 ApplicationContext 인터페이스를 구현하여 IoC 컨테이너를 제공한다.
- 이를 통해 객체의 생성, 관리, 의존성 주입 등을 관리할 수 있다.
[ 빈(Bean) 관리 ]
- 빈(Bean)은 스프링 애플리케이션에서 관리되는 객체를 의미하며 빈의 생성, 설정, 생명주기 관리 등을 담당한다.
[ 의존성 주입 (Dependency Injection) ]
- 스프링은 의존성 주입을 통해 객체 간의 결합도를 낮추고 유연한 애플리케이션을 구현할 수 있도록 한다.
- spring-core는 의존성 주입을 구현하고 지원한다.
[ 이벤트 발생 및 리스닝 ]
- 이벤트 기반 프로그래밍을 지원하기 위해 이벤트 발행과 리스닝 메커니즘을 제공한다.
- 애플리케이션 내에서 발생하는 이벤트를 처리하고 응답할 수 있도록 도와준다.
[ 프로퍼티 파일 로딩 ]
- 환경 설정과 관련된 프로퍼티 파일을 로딩하고 처리하는 기능을 제공한다.
[ 리소스 로딩 및 리소스 추상화 ]
- 클래스패스, 파일 시스템 등 다양한 위치에서 리소스를 로딩하고 추상화하는 기능을 제공한다.
📌 가장 많이 사용되는 의존성 주입 방법은 무엇인가?
의존성 주입 방법에는 생성자 주입, 수정자 주입, 필드 주입, 일반 메서드 주입 4가지가 있다. 가장 많이 사용되면서 스프링에서 권장하는 의존성 주입 방법은 생성자 주입이다. 생성자 주입을 권장하는 이유는 객체를 생성할 때 최초로 1번만 호출되기에 불변하게 설계할 수 있고, 누락되었을 경우 런타임 오류가 아닌 컴파일 오류가 발생하며, 순환 참조를 방지할 수 있기 때문이다.
@Service
public class MyService {
private final MyRepository myRepository;
private final YourRepository yourRepository;
@Autowired
public MyService(MyRepository myRepository, YourRepository yourRepository) {
this.myRepository = myRepository;
this.yourRepository = yourRepository;
}
}
생성자가 1개만 존재하는 경우 @Autowired를 생략해도 자동 주입된다.
📌 스프링 빈은 thread-safe 한가?
스프링 빈의 스레드 안전성은 일반적으로 해당 빈이 어떻게 디자인되었느냐에 따라 다르다.
[ Singleton Scope ]
- 스프링 빈의 기본 스코프인 싱글톤 스코프에서는 해당 빈이 애플리케이션 컨텍스트 내에서 단일 인스턴스로 유지된다.
- 스프링 빈이 상태를 가지지 않거나, 상태를 공유할 수 있도록 적절히 설계된 경우에는 스레드 안전성을 보장할 수 있다.
[ Prototype Scope ]
- 프로토타입 스코프로 정의된 스프링 빈은 요청마다 새로운 인스턴스가 생성되기 때문에 스레드 안전성에 대한 고려가 더 필요하다.
- 프로토타입 빈 내에서 공유 상태에 대한 명확한 제어 없이는 스레드 안전성이 보장되지 않을 수 있다.
[ Request, Session, Global Session Scope ]
- 해당 스코프의 특성에 따라 스레드 안전성이 결정된다.
@Configuration
public class AppConfig {
@Bean
@Scope("singleton")
public SingletonBean singletonBean() {
return new SingletonBean();
}
@Bean
@Scope("prototype")
public PrototypeBean prototypeBean() {
return new PrototypeBean();
}
}
📌 스프링은 얼마나 많은 bean scope를 유지할 수 있나?
스프링 프레임워크에서는 다양한 빈 스코프를 제공하며, 개발자는 애플리케이션의 요구사항에 맞게 적절한 스코프를 선택할 수 있다. 또한 다양한 커스텀 스코프를 지원하기에 개발자는 필요에 따라 스코프를 구현하고 등록할 수 있기 때문에 bean scope 개수에 대한 제한은 없다.
주니어 자바 개발자를 위한 100가지 질문 (9. Spring)_2
📌 스프링 auto-assembles 빈을 위한 방법들을 말하라. 스프링에서 빈을 자동으로 조립하기 위한 여러 가지 방법이 있다. [ @ComponentScan ] 지정된 패키지 이하에서 @Component 어노테이션이 붙은 클래스
dev-density.tistory.com
'Java' 카테고리의 다른 글
GC(Garbage Collection) 이란? (0) | 2024.04.25 |
---|---|
주니어 자바 개발자를 위한 100가지 질문 (9. Spring)_2 (1) | 2024.02.23 |
주니어 자바 개발자를 위한 100가지 질문 (8. Internet)_2 (0) | 2024.02.20 |
주니어 자바 개발자를 위한 100가지 질문 (8. Internet)_1 (0) | 2024.02.19 |
주니어 자바 개발자를 위한 100가지 질문 (7. 예외 클래스) (0) | 2024.02.16 |