Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring] 생성과 주입의 annotation, & 활성화 본문
생성 annotation
@Component: <bean>태그와 동일한 역할을 한다. 객체 생성
이를 확장해놓은,
@Repository: persistence(영속성)을 가지는 클래스 생성
@Service: business logic을 가지는 클래스 생성
@Controller: presentation layer, 웹 요청과 응답을 처리하는 클래스 생성
🚨. annotation의 기본 id는 클래스 이름의 '첫글자'만 '소문자', 나머지는 동일
주입 annotation
@Autowired: <constructor-arg />, <property />을 byType으로 주입
같은 타입이 여러개 있다면 byName으로 주입
@Resource: 의존하는 객체를 자동으로 주입, 주로 byName으로 주입
@Value: <property />와 동일한 역할을 한다.
@Qualifier: 동일한 타입의 bean객체가 여러개 존재할 때, 특정 bean을 찾기 위해서 id 설정
⚠️ @Scope("prototype") // 지연초기화 (필요할 때마다 새로운 객체 생성)
📌. bean등록 annotation in xml
⚠️ context: 필요로하는 객체들을 미리 생성
<context:component-scan base-package=" " /> // 하위를 포함, 여러개일 땐 콤마(,)로 구분
@Component를 통해 자동으로 bean 등록
(+ annotation마다 활성화하는 전용클래스가 따로 있다, 만들어서 등록이 필요하다)
하나하나 bean을 만들어서 등록하지 말고, 몰아서 한번에 등록
<context:annotation-config /> // spring 내부에서 알아서 등록
(@Component, @Repository, @Service, @Controller, @RestController, @ControllerAdvice
and @Configuration +
@Required, @Autowired, @Resource, ...
⚠️ context: 필요로하는 객체들을 미리 생성
<context:component-scan base-package=" " /> // 하위를 포함, 여러개일 땐 콤마(,)로 구분
@Component를 통해 자동으로 bean 등록
(+ annotation마다 활성화하는 전용클래스가 따로 있다, 만들어서 등록이 필요하다)
하나하나 bean을 만들어서 등록하지 말고, 몰아서 한번에 등록
<context:annotation-config /> // spring 내부에서 알아서 등록
(@Component, @Repository, @Service, @Controller, @RestController, @ControllerAdvice
and @Configuration +
@Required, @Autowired, @Resource, ...
@Controller
public class EmpController {
@Autowired // byType으로 주입
@Qualifier("emp2")
private EmpDTO empDTO; // injection
@Autowired
private EmpDTO emp;
@Autowired
private EmpService service;
public EmpController() {
System.out.println("EmpController constructor call");
}
public void test() {
System.out.println("empDTO: " + empDTO + ", empno: " + empDTO.getEmpno());
System.out.println("emp: " + emp + ", empno: " + emp.getEmpno());
System.out.println("service: " + service);
service.test();
}
}
@RequiredArgsConstructor
lombok에서 생성자를 통한 주입
⚠️. @Autowired를 안쓴다.
'Backend > 스프링' 카테고리의 다른 글
[Spring] front Controller: DispatcherServlet(in web.xml)과 Spring MVC bean(in SPRING BEAN 설정문서.xml) (0) | 2023.05.02 |
---|---|
[Spring] 관점지향프로그래밍 AOP와 Advice, 프록시 서버(Proxy Server) (0) | 2023.05.01 |
[Spring] 환경설정정보(.properties) 바인딩 (0) | 2023.04.30 |
[Spring] Spring Container에 의한 제어의 역행(Inversion Of Control)과 DI (0) | 2023.04.30 |
[Spring] 프레임워크 Spring과 Spring Container, Bean (0) | 2023.04.27 |
Comments