- Today
- Total
- 빌드 에러
- JAVA #프로그래머스 #약수의 개수와 덧셈
- JAVA #프로그래머스 #문자열 내림차순으로 배치하기
- 자바 #프로그래머스 #JAVA #최솟값 만들기 #코딩테스트
- 최대값과 최솟값 #자바 #JAVA
- JAVA #코드업 #기초 100제
- IntelliJ #인텔리제이 #교육용
- 데이터베이스 #DB #데이터 #정의 #기본
- Java
- 자바 #JAVA #프로그래머스 #정수 내림차순으로 배치하기
- JAVA #자바 #프로그래머스 #서울에서 김서방 찾기
- JAVA #자바 #프로그래머스 #두 정수 사이의 합
- 최대값과 최솟값
- Could not resolve all files for configuration
- 콜라츠 추측 #자바 #JAVA #프로그래머스
- JAVA #자바 #프로그래머스 #나머지가 1이되는 수
- JAVA #프로그래머스
- 백준 #자바
- 자바 #프로그래머스 #JAVA #다음 큰 숫자
- 게임 맵 최단거리 #자바 #JAVA #프로그래머스
- JAVA #핸드폰 번호 가리기 #프로그래머스 #자바
- servlet
- 백준 #JAVA #자바
- JAVA #백준
- 문자열 다루기 기본 #자바 #JAVA
- 프로그래머스
- JAVA #자바 #프로그래머스 #숫자의 표현
- 나누어 떨어지는 숫자 배열 #자바 #JAVA #프로그래머스
- SW공학
- 스프링 #의존성 주입 #DI
MOMONOTE
의존성 주입 (DI), Bean에 대해 본문
간단히 생각하면, 다른 객체를 사용하는 것을 다른 객체에 의존한다
라고 한다. 어떤 객체 A 가 B객체를 이용하면 , A객체는 B객체의 기능에 의존한다.
A객체는 B객체를 생성하고 , 라이프 사이클을 관리하고 A 객체에 의존
주입을 관리하는 무언가를 컨테이너라 부른다.
개발자가 직접 제어하지 않고 컨테이너가 객체를 제어한다는 의미에서
제어의 역전이라는 용어가 사용된다.
스프링 컨테이너는 빈 객체의 생성,
초기화, 의존 주입 등 객체 관리를 위한 다양한 기능 제공하며,
라이프사이클도 관리한다.
@Configuration이 붙은 클래스는 스프링 설정으로 사용됨을 의미한다.
@Bean : 각 메서드에 @Bean을 붙이면 스프링 컨테이너에 자동으로 등록이 됩니다. @Bean(name = "name1")을 통해 빈의 이름을 변경할 수 있다. 이름 지정하지 않으면 메서드 이름이 빈의 이름으로 등
스프링 4버전 이상부터는 생성자를 통한 주입을 권장하고 있다.
밑의 코드에서 Member 클래스는 이미 정의되어있습니다.
@Configuration
public class Config{
//setter 통함 의존성 주입
@Bean
public Member member1() {
Member meber1 = new Member();
member1.setName("name1");
member1.setPrinter(new PrintA());
return member1;
}
//생성자 통한 의존성 주입
@Bean(name ="member2")
public Member member2() {
return new Member("name2",new PrintA());
}
}
어노테이션을 통한 의존성 주입
@Component
public class Animal{
@value("야옹이")
private String name;
@Autowired
@Qualifier("member2")
private Member member;
}
@Configuration이 설정된 클래스파일이 필요가 없다.
@Component를 통해 Animal 클래스를 스프링의 빈으로 등록한다.
@Value("야옹이") name 변수의 기본값으로 야옹이 지정
@Autowired 는 해당 클래스의 객체를 가져와 자동으로 연결한다. 스프링 컨테이너에 등록된 빈 중 사용할 수 있는 객체를 찾아 자동으로 연결해준다. 이때 @Qualifer 로 이름을 명확하게 지정해준다.
위의 코드에서 @Autowired 를 통해 member에 member2라는 객체를 주입한다. ( 의존성을 주입 )
'Spring' 카테고리의 다른 글
Could not resolve all files for configuration ':classpath' (0) | 2023.05.14 |
---|