일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- 컴퓨터공학 #c #c언어 #문자열입력
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
- 잔
- HTML #CSS
- Today
- Total
영벨롭 개발 일지
[Spring] 스프링 빈 Spring Bean 본문
★ 스프링 빈 Spring Bean
Bean 은 Spring IoC 컨테이너가 관리하는 자바 객체로, 스프링에 의해 생성되고 관리되는 인스턴스화된 객체입니다.
ApplicationContext(IoC 컨테이너)가 생성하고 관리하며 Bean 을 얻기 위해 ApplicationContext.getBean() 과 같은 메소드를 사용합니다.
Bean 은 클래스의 등록 정보, Getter/Setter 메소드를 포함하며, 컨테이너에 사용되는 설정 메타데이터로 생성됩니다.
이때 설정 메타데이터는 XML, 자바 Annotation, 자바 코드로 표현되며, 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체 등을 정의합니다.
★ Spring Bean 을 Spring IoC Container 에 등록하는 방법
1. @Component 어노테이션
스프링에서 Bean 으로 등록하기 위해 @Component 어노테이션을 사용합니다.
스프링은 @Component 로 등록되어 있는 경우 자동으로 Bean 으로 등록합니다.
@Component 는 ElementType.TYPE 설정이 있으므로 Class 혹은 Interface 에만 붙일 수 있습니다.
@Component 이외에도 이를 상속받는 @Controller, @Service, @Repository, @Configuration 어노테이션도 Bean 으로 자동 등록됩니다.
- Controller - 스프링 MVC 의 컨트롤러로 인식됨
- Repository - Data Access Object 와 같이 실제 데이터 근원과 소통하는 스프링 데이터 접근 계층으로 인식됨. 해당 계층에서 발생하는 예외는 모두 DataAccessException 으로 변환함.
- Service: 특별한 처리는 하지 않으나, 개발자들이 핵심 비지니스 로직이 구현된 계층으로 인식하는데 도움을 줌
- Configuration: 스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 함
@Controller
public class PostController {
@GetMapping(“post”)
public String post(Model model) {
model.addAttribute(“data”, “this is data!”);
return “post”;
}
}
2. 직접 Bean 으로 등록 - @Configuration, @Bean 어노테이션
@Configuration 과 @Bean 어노테이션으로 Bean 을 등록하는 방법으로, 개발자가 컨트롤이 불가능한 외부 라이브러리들을 빈으로 등록하고 싶은 경우 사용합니다.
@Bean 은 ElementType.METHOD 와 ElementType.ANNOTATION_TYPE 설정임으로 메소드 또는 어노테이션 단위에만 붙일수 있습니다.
@Configuration 은 Bean 에 대해 싱글톤을 보장합니다.
스프링 프로젝트에서 Configuration 역할을 하는 클래스를 지정 후, 인스턴스를 생성하는 메소드 위에 @Bean 어노테이션을 사용하여 Bean 으로 등록합니다.
@Configuration
public class DemoConfiguration {
@Bean
public DemoController demoController() {
return new DemoController;
}
}
'Back-end > Spring' 카테고리의 다른 글
[Spring] 스프링 + JPA + MySQL 연동 (0) | 2023.08.13 |
---|---|
[Spring] ORM, JPA, Hibernate, JDBC, Spring Data JPA 개념 정리 (0) | 2023.08.07 |
[Spring]스프링 계층 구조 - Controller, Servcie, Repository, DAO, DTO, Entity (0) | 2023.08.07 |
[Spring] 스프링 + MyBatis + MySql 연동 (0) | 2023.08.06 |
[Spring]Spring Framework 란? - 스프링 개념 및 특징 정리 (0) | 2023.08.05 |