Spring Boot
Bean
- Spring IoC(제어의 역전) 컨테이너가 관리하는 Java 객체
제어의 역전이란, 객체의 생성 및 제어권을 사용자가 아닌 스프링에 맡기는 것이다. 이전까지는 사용자가 new연산을 통해 객체를 생성하고 메소드를 호출했지만, IoC가 적용된 경우에는 이러한 객체의 생성과 사용자의 제어권을 스프링에게 넘긴다.
- Spring에서는 new를 이용해 만들어진 객체가 아니라 Spring에서 관리하는 Bean이라는 객체를 이용한다.
- 장점
- 의존성 관리가 용이하다.
- 똑같은 객체가 여러 번 만들어지는 것이 아니라 하나를 만들면 그것을 재사용한다. => 메모리 절약
Bean 등록 방법
- @Component
- 가장 쉬운 방법으로 클래스 선언부 위에 @Component을 사용하면 된다. 자동 등록이 된다.
- 또한, @Component를 포함하는 @Controller, @Service, @Repository도 스프링 Bean으로 자동 등록이 된다.
- 자바 설정 클래스를 직접 만들기
- 설정 클래스를 만들고 @Configuration 이용
- 해당 클래스 안의 메소드에 @Bean 이용
@Configuration을 이용하면 스프링 프로젝터에서 Configuration 역할을 하는 Class를 지정할 수 있다.
- Bean으로 등록된 친구를 의존성 주입받아 사용하려면 @Autowired 사용.
- 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에 찾아서 넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 '의존성 주입(DI)'라고 한다.
Annotation
- Annotation(@)는 사전적 의미로 주석을 의미한다.
- Java에서 @는 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하게 해준다.
- 프로그램에서 추가적인 정보를 제공해주는 메타데이터
Annotation 장점과 사용법
- 장점
- 코드량이 감소한다.
- 유지보수가 쉽다.
- 생산성이 증가한다.
- 사용 순서
- @를 정의한다.
- 클래스에서 @를 배치한다.
- 코드가 실행되는 중 추가 정보를 획득해 기능을 실시한다.
@Bean
- 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 등록하고자 할 때 사용되는 Annotation
@Configuration
public class ApplicationConfig{
@Bean
public ArrayList<String> array1(){
return new ArrayList<String>();
}
@Bean(name="myarray")
public List<String> array2(){
return new List<String>();
}
}
@Component
- 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 Annotation
- 즉, 간단하게 Bean을 등록하기 위해 사용되는 Annotation
@Component
public class Student{
public Student(){
System.out.println("hi");
}
}
@Autowired
- 스프링 컨테이너에 등록한 Bean에게 의존 관례 주입이 필요할 때, DI(의존성 주입)을 도와주는 어노테이션
- 즉, @Autowired를 사용한 클래스에서 적용된 클래스를 사용할 수 있게 해준다.
@SpringBootApplication
- @Configuration, @EnableAutoConfiguration, @ComponentScan 3가지가 합쳐진 어노테이션
- Spring Boot 어플리케이션 실행 초기 진입점에 위치하는 어노테이션
[포스코x코딩온] API 만들기(Get, Post, Axios 사용법) (2) |
2023.11.01 |
[포스코x코딩온] REST, RESTAPI, DTO, VO (SpringBoot) (0) |
2023.10.31 |
[포스코x코딩온]SpringBoot의 시작(설치부터 Thymeleaf사용까지) (1) |
2023.10.28 |
[포스코x코딩온] Java (Wrapper 클래스, 오토박싱과 오토언박싱, 제네릭, 와일드 카드, 컬렉션) (0) |
2023.10.26 |
[포스코x코딩온] Java(인터페이스, 다형성) (1) |
2023.10.25 |