leecom116

제이의 기술 블로그
  • Print (216)
    • Frontend (29)
      • React (3)
      • HTML, CSS (8)
      • JavaScript (11)
      • JQuery (4)
      • JSP (2)
    • Backend (59)
      • Java (31)
      • Spring (11)
      • Spring Boot (0)
      • Python (1)
      • Node.js (1)
      • C, C++ (12)
      • Linux (2)
    • Database (3)
      • MariaDB (0)
      • Oracle (0)
      • MySQL (0)
    • Project (1)
    • Algorithm (67)
      • 백준 (43)
      • 프로그래머스 (0)
      • 이코테 (6)
      • 코드업 (17)
    • Tool (2)
      • Git (1)
      • Log (1)
    • CS (4)
    • Tech Interview (18)
      • Java (9)
      • Web (9)
    • Study (31)
      • 인프런 (3)
      • 정보처리기사 (8)
      • util (4)
      • 쌍용 (14)

깃허브

    https://github.com/leecom116

«   2025/07   »
일 월 화 수 목 금 토
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

최근 글

인기 글

블로그 메뉴

  • 홈
  • 태그
  • 방명록

태그

  • JSP
  • 논리 연산자
  • 델파이 기법
  • 코드업
  • 메타포어
  • 웹개발
  • 객체 배열
  • 자바 인터페이스
  • 의존성 주입
  • char
  • man month
  • 참조형 변수
  • 웹 개발
  • CSS
  • Associate
  • 산술 변환
  • 정보공학 방법론
  • 코드업 기초100제
  • 코드업 기초
  • HTML
  • 나선형 모델
  • 웹 개발 부트캠프
  • c언어
  • Web Developer
  • 나도코딩
  • 코드업 2차원 배열
  • 자바의 정석
  • static메서드
  • 자바 예외 처리
  • C언어 프로젝트

최근 댓글

hELLO · Designed By 정상우.
leecom116
Backend/Spring

스프링 어노테이션 정리 - 의존성 주입, 빈 등록

2022. 11. 10. 11:02



의존성 주입 어노테이션 

@Autowired
- 필요한 의존 객체의 타입에 맞는 IoC컨테이너 안에 존재하는 Bean을 자동 주입(의존성 주입)
- 방법 3가지 : 생성자 ,setter, 필드
- 의존 객체 찾는 순서 : 1.타입 2.이름 3.@Qualifier 지정 객체 (1,2,3번에 해당 안될시 예외 발생)

 

@Resource

- @Autowired와 같은 역할

- 자바가 제공하는 어노테이션

- 의존 객체 찾는 순서 : 1.이름 2.타입 3.@Qualifier 지정 객체 (1,2,3번에 해당 안될시 예외 발생)

- name 속성을 생략한 경우, 필드와 동일한 이름을 갖는 빈 주입

 

@Inject

- @Autowired와 유사, 타입으로 의존성 주입

- 동일한 타입이 둘 이상이면 이름으로 빈 의존성 주입

 

 

우선순위 부여 어노테이션

@Qualifier

ex) @Qualifier(value = "bean 객체 이름")

 

value에 맞는 bean 객체가 존재하지 않으면 Exception 발생


@Named
- @Autowired의 @Qualifier와 같이 사용할 수 있는 것이 @Inject에서는 @Named이다.

 

 

 

스프링 빈(Bean) 등록 어노테이션

@Component
- 개발자가 직접 작성한 Class를 Bean으로 등록하기 위해 사용
  ex) @Component(value="spring")
- 추가 정보가 없을 경우 Class의 이름을 Bean id로 사용(맨 앞문자 소문자)


@Controller
- 컨트롤러 클래스를 만들때 사용
- 스프링 설정 파일에 등록된 패키지 안에서만 컨트롤러 검색, 다른 패키지에  컨트롤러 작성시 설정파일에 추가해야 된다.

@Service - DAO 이외의 모든 클래스
- 해당 클래스를 루트 컨테이너에 Bean 객체로 생성해주는 어노테이션
- 부모 어노테이션인 @Component는 가시성이 떨어져 잘 사용하지 않는다.

 

@Repository - DAO 역할 클래스에 한정

- @Service와 명시적으로 구분하기 위해 각자 분리하여 사용

 

 

@Bean

- 메소드 레벨에서 선언

- 개발자가 직접 제어 불가능한 외부 라이브러리를 Bean으로 만들때 사용
- 반환되는 객체를 개발자가 수동으로 빈 등록

 

 

@scope- 빈의 범위를 설정

ex) @Scope(value = "prototype")


Bean Scope의 종류

- singleton : IoC 컨테이너당 하나의 빈을 리턴

- prototype : 요구가 있을때마다 새로운 빈을 만들어 리턴

- request : HTTP request 객체당 하나의 빈을 리턴

- session : HTTP session 객체당 하나의 빈을 리턴

- globalSession : 전체 모든 세션에 대해 하나의 빈을 리턴 

 

 

 

빈 자동 등록 어노테이션

@ComponentScan
- @Component, streotype(@Service, @Repository, @Controller)
  어노테이션이 부여된 Class들을 자동으로 Scan하여 Bean으로 등록해주는 역할

@ComponentScan(basePackages = {"com.config.user1"})
// basePackages : 패키지 경로에 대한 설정



저작자표시 (새창열림)

'Backend > Spring' 카테고리의 다른 글

스프링 어노테이션 정리 - AOP 구현, 시점 기반  (0) 2022.11.13
스프링 어노테이션 정리 - 환경설정, 값 주입  (0) 2022.11.13
스프링 핵심 개념 - IoC, DI, Model  (0) 2022.11.13
스프링 XML 정리 - 네임스페이스(c, p), 의존성 주입  (0) 2022.11.13
스프링 어노테이션 정리 - 컨트롤러, 매핑, 파라미터 주입  (0) 2022.11.11
    'Backend/Spring' 카테고리의 다른 글
    • 스프링 어노테이션 정리 - 환경설정, 값 주입
    • 스프링 핵심 개념 - IoC, DI, Model
    • 스프링 XML 정리 - 네임스페이스(c, p), 의존성 주입
    • 스프링 어노테이션 정리 - 컨트롤러, 매핑, 파라미터 주입
    leecom116
    leecom116

    티스토리툴바