Spring
스프링 사용의 장점은 무엇인가요?
AOP (관점 지향 프로그래밍)
모듈화 같은 느낌이라고 필자는 이해하고있다. 로깅, 트랜잭션 같은 반복되는 코드들을 모듈화 해서 사용함으로써 코드의 중복성을 낮추고 개발의 효율성을 높인다.
DI (의존성 주입)
Dependency Injection 의 약자로서 객체의 의존성을 주입해준다.
생성자 주입, Setter 주입, 필드 주입 등의 방법이 있다.
각 객체의 의존 관계를 동적으로 정립해준다. 결합도를 낮추고 독립성을 높이며 확장도 용이하며 테스트 편의성도 올라간다.
POJO (Plain Old Java Object) 코드 지향
오직 자바로만 구성된 객체를 뜻하는 말로 다른 기술에 종속되지 않고 클린한 자바코드를 구성하는 것을 지향하는 스프링의 장점이다. 기술에 종속성이 낮아지고 독립성이 올라가 확장이 용이하다.
AOP란 무엇인가요?
관점 지향 프로그래밍 이라 하며 서비스 또는 로직을 볼때 주요 관심사, 서브 관심사를 나누어서 모듈화 해서 프로그래밍을 하자는 뜻으로 필자는 이해했다. 간단히 하면 모듈화를 추구하는 프로그래밍..?
스프링의 장점 중 하나이며 트랜잭션, 로깅 같은 기능을 모듈화 한다.
프록시 기반 구현체로 알고있다.
IOC란 무엇인가요?
Inversion of control 의 약자로 제어의 역전이라고 한다. 어떤 것의 제어를 개발자가 아닌 무언가가 대신 해줌으로써 개발자는 개발에 좀 더 집중 할 수 있도록 해주는 개념이다.
DI 도 IOC 중 하나이다.
스프링의 메인 모듈은 무엇인가요?
Core Container 안에 모듈들이 메인모듈이라 생각한다.
DI, IOC, Bean, Application Context 와 같은 기능을 모두 담담하는 모듈들이 들어있기 때문이다.
가장 많이 사용되는 의존성 주입 방법은 무엇인가요?
생성자 주입이다. 단 한번 실행이 보장되기에 불변이 보장되고 순환 참조를 방지해준다.
Setter 주입은 Setter 사용 자체가 객체의 불변성을 보장하지 못하기 때문에 자제하길 권한다.
필드 주입은 필드에@Autowired 를 사용하여 의존성을 주입하는 방식인데 순수 자바코드가 아니므로 프레임워크 의존성이 높아져 외부에서 변경이 불가하다.
스프링 빈은 thread-safe 한가요?
결론부터 말하면 Thread-Safe 하지 않다.
_________________________________________________________________________
스프링은 얼마나 많은 bean scope를 유지할 수 있나요?
___________________________________________________________________________
스프링 auto-assembles 빈을 위한 방법들을 말해주세요.
컴포넌트 스캔
Autowired
스프링 트랜잭션을 구현하기 위한 다양한 방법을 말해주세요.
@Transactional (선언적 트랜잭션)
스프링에서 지원해주는 기능이다. 트랜잭션을 적용하고 싶은 클래스에 해당 어노테이션을 달면
스프링에서 트랜잭션을 걸어주어 편리하게 사용 가능하다. 고립 단계도 설정 등 다양한 옵션 설정이 가능하다.
또 일반 트랜잭션 과 는 여러 설정 면에서 다른 점이 있기에 내용을 숙지하고 사용하는것이 좋다.
트랜잭션 롤백 예외
스프링에서는 데이터 엑세스 문제, 런타임 오류 일때 롤백이 진행되고 체크 오류 같은 경우에는 커밋을 진행한다.
Last updated