스프링에서 빈을 등록하는 방법에 대해 설명해주세요.
DI에 대해 설명해주세요.
Spring Filter와 Interceptor에 대해 설명하고, 사용 예시를 설명해주세요.
PSA에 대해 설명해주세요.
빈의 스코프에 대해 설명해주세요.
Spring Framework를 왜 사용해야 할까요? 이유에 대해 설명해주세요.
제가 생각하는 가장 큰 이유는 확장성때문입니다.
Spring Framework는 모듈화, 의존성 주입을 통해 새로운 요구사항이나 기능을 빠르게 추가할 수 있고, 다양한 도구 및 라이브러리(스프링 부트, JPA등등)를 지원이 되기 때문에 개발 범위가 넓기 때문입니다.
한가지를 더 고른다면 개발자 친화적이기 때문입니다.
IoC, DI, AOP(관점지향 프로그래밍)을 통해 코드 재사용성, 유지보수성이 높기 때문입니다.
Spring MVC의 동작방식에 대해 설명해주세요.
DispatcherServlet에 대해 설명해주세요.
DTO를 사용한 이유를 말해주세요.
HTTP API와 REST API에 대해서 설명해주세요.
annotation 이란 무엇인지, 어떤 것들이 있는지 설명해주세요.
사전적 의미로는 주석이라는 뜻이지만, 자바에서 Annotaion(@)은 코드 사이에 특별한 의미, 기능을 수행하도록 하는 기술이다.
프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공하고, 코드에 정보를 추가하는 정형화된 방법이다.
어노테이션을 사용하면 코드가 깔끔해지고 재사용이 가능하다.
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
- 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공
- 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공
종류 참고
singleton pattern 에 대해 설명해주세요.
객체 지향 프로그래밍에서 특정 클래스가 단 하나만의 인스턴스를 생성하여 사용하기 위한 패턴
생성자를 여러 번 호출하더라도 인스턴스가 하나만 존재하도록 보장하여 애플리케이션에서 동일한 객체 인스턴스에 접근할 수 있도록 한다.
싱글톤 패턴을 사용하는 이유
커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러 개 만들게 되면 불필요한 자원을 사용하게 되고, 프로그램이 예상치 못한 결과를 낳을 수 있다. 따라서 객체를 필요할 때마다 생성하는 것이 아닌 단 한 번만 생성하여 전역에서 이를 공유하고 사용할 수 있게 하기 위해 싱글톤 패턴을 사용한다.
싱글톤 패턴의 장단점
장점
유일한 인스턴스 : 싱글톤 패턴이 적용된 클래스의 인스턴스는 애플리케이션 전역에서 단 하나만 존재하도록 보장한다. 이는 객체의 일관된 상태를 유지하고 전역에서 접근 가능하도록 한다.
메모리 절약 : 인스턴스가 단 하나뿐이므로 메모리를 절약할 수 있다. 생성자를 여러 번 호출하더라도 새로운 인스턴스를 생성하지 않아 메모리 점유 및 해제에 대한 오버헤드를 줄인다.
지연 초기화 : 인스턴스가 실제로 사용되는 시점에 생성하여 초기 비용을 줄일 수 있다.
단점
결합도 증가 : 싱글톤 패턴은 전역에서 접근을 허용하기 때문에 해당 인스턴스에 의존하는 경우 결합도가 증가할 수 있다.
테스트 복잡성 : 싱글톤 패턴은 단 하나의 인스턴스만을 생성하고 자원을 공유하기 때문에 싱글톤 클래스를 의존하는 클래스는 결합도 증가로 인해 테스트가 어려울 수 있다.
상태 관리의 어려움 : 만약, 싱글톤 클래스가 상태를 가지고 있는 경우 전역에서 사용되어 변경될 수 있다. 이로 인해 예상치 못한 동작이 발생할 수 있다.
전역에서 접근 가능 : 애플리케이션 내 어디서든 접근이 가능한 경우, 무분별한 사용을 막기 힘들다. 이로 인해 변경에 대한 복잡성이 증가할 수 있다.
싱글톤 조건
- new 키워드를 사용할 수 없도록 생성자에 private 접근 제어자를 지정해야 한다.
- 유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요하다.
- 유일한 단일 객체를 참조할 정적 참조 변수가 필요하다.
출처: https://ittrue.tistory.com/563 [IT is True:티스토리]
https://docs.spring.io/spring-framework/reference/index.html
'CS' 카테고리의 다른 글
[CS] Spring DI란? (0) | 2024.04.30 |
---|---|
[CS] Spring에서 Bean 등록하는 방법 (0) | 2024.04.29 |
[CS 스터디] Java(자바) (0) | 2024.04.17 |
[CS 스터디] 알고리즘(Algorithm) (0) | 2024.04.08 |
[CS 스터디] 자료구조(Data Struture) (0) | 2024.03.26 |