개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. Spring 프레임워크에서 사용되는 @Autowired 애노테이션은 무엇이며, 어떤 상황에서 사용되나요?
  • Q. 그렇다면 스프링에서 빈(Bean)은 무엇인가요?
  • Q. 생성자에 @Autowired를 사용하는 것과 @RequiredArgsConstructor를 사용하는 것의 차이점은 무엇인가요?
  • Q.보일러플레이트 코드가 뭔가요?
  1. 02 Spring

@Autowired, @RequiredArgsConstructor

Q. Spring 프레임워크에서 사용되는 @Autowired 애노테이션은 무엇이며, 어떤 상황에서 사용되나요?

@Autowired 애노테이션은 Spring 프레임워크에서 의존성 주입(Dependency Injection)을 자동으로 수행하는 데 사용됩니다. 이를 통해, 개발자가 별도로 객체를 생성하거나 초기화할 필요 없이, Spring이 자동으로 필요한 빈(Bean)을 찾아 주입합니다. @Autowired는 생성자, 세터 메서드, 필드에 적용될 수 있으며, 주로 다른 빈의 참조를 자동으로 주입할 때 사용됩니다.


Q. 그렇다면 스프링에서 빈(Bean)은 무엇인가요?

스프링 빈(Spring Bean)은 스프링 프레임워크에서 관리되는 객체를 의미합니다. 스프링 컨테이너에 의해 생성되고, 관리되며, 필요할 때마다 주입되는 자바 객체입니다. 빈은 스프링의 IoC(Inversion of Control, 제어의 역전) 컨테이너에 의해 생명주기가 관리되며, 애플리에션 내에서 다양한 기능을 수행합니다. 스프링 빈은 기본적으로 싱글톤 패턴으로 스프링 컨테이너 내에서 동일한 타입의 빈은 하나만 생성됩니다. 또한 빈은 다른 빈들 간의 의존성을 관리하여 객체 간의 결합도를 낮추고, 모듈성을 높일 수 있습니다.


Q. 생성자에 @Autowired를 사용하는 것과 @RequiredArgsConstructor를 사용하는 것의 차이점은 무엇인가요?

@Autowired를 생성자에 사용하면, Spring이 해당 생성자에 필요한 의존성을 자동으로 주입합니다. 이와 유사하게, @RequiredArgsConstructor는 Lombok 라이브러리에서 제공하는 애노테이션으로, 클래스 내 모든 final 필드와 @NonNull이 적용된 필드에 대해 생성자를 자동으로 생성합니다. 이 두 가지의 주요 차이점은 @RequiredArgsConstructor는 Lombok을 사용하여 코드의 간결함을 유지하고, 불필요한 보일러플레이트 코드를 줄여준다는 것입니다. @Autowired는 Spring에서 제공하며, Lombok을 사용하지 않을 때 의존성 주입을 위해 활용됩니다.


Q.보일러플레이트 코드가 뭔가요?

보일러플레이트 코드(Boilerplate Code)는 소프트웨어 개발에서 반복적으로 작성해야 하는, 하지만 비즈니스 로직과 직접적인 관련이 없는 코드들을 의미합니다. 예를 들어, 객체 지향 프로그래밍에서 객체를 생성하고 초기화하는 과정에서 매번 생성자, getter, setter 메서드를 작성해야 하는 경우가 있습니다. 이러한 메서드는 대부분 비슷한 형식을 가지고 있고, 코드의 핵심적인 비즈니스 로직과는 직접적인 관련이 없지만 반드시 작성되어야 하는 경우가 많습니다.

Previous02-01. Spring 동작 방식Next인증(Authentication)과 인가(Authorization)

Last updated 8 months ago