SPRING Annotation(1)

Ga0·2023년 4월 13일
0

SPRING

목록 보기
4/14
post-thumbnail

Annotation

  • 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터
  • 다양한 기능을 부여하는 역할을 한다.
  • 예를 들어 Annotation을 사용하면 Spring Framwork는,
    • 각각의 해당 클래스들이 어떤 역할을 하는지 정한다.
    • Bean 주입해준다.
    • 자동으로 getter, setter, toString, 생성자들을 생성해주기도 한다.
  • 이와 같이 Annotation을 사용하면 코드량을 감소할 수 있고, 유지보수하기도 쉽고, 당연히 생산성도 증가한다. 뿐만 아니라 협업에서는 자유도가 떨어지므로 오히려 더 체계적인(?) 업무를 진행할 수 있다. (패턴이 정해져있기 때문에 코드 가독성도 그냥 원하는 대로 짜는 것보단 좋다.)

주요 Annotation(1)

@SpringBootApplication

  • 스프링 부트의 가장 기본적인 설정을 선언
  • auto-configuration을 담당하며, 스프링부트의 자동 설정, 스프링 Bean 읽기와 생성을 모두 자동적으로 설정
  • 가장 먼저 읽기 때문에 프로젝트 최상단에 위치해야한다!
  • @Configuration, @EnableAutoConfiguration, @ComponentScan 3가지를 하나의 어노테이션으로 합친 것
    • @EnableAutoConfiguration : spring Application context를 만들때 자동으로 설정하는 기능을 켠다. (classpath의 내용을 기반해서 자동으로 생성)
    • @ComponentScan : @service, @repository, @controller, @configuration이 붙은 Bean들을 찾아서 Context에 bean등록 해주는 어노테이션

@Controller

  • 전통적인 SPRING MVC 컨트롤러
  • Model 객체를 만들어 데이터를 담고 View에 반환
  • 프레젠테이션 레이어, 웹 요청과 응답을 처리

@RestController

  • RESTful 웹 서비스 컨트롤러
  • 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP응답에 담아 전송
  • @Controller@ResponseBody를 사용해서 만들 수는 있지만 이러한 방식은 RESTFul 웹 서비스의 기본 동작이기 때문에 @Controller + @ResponseBody의 동작을 조합하여 만든 것이@RestController이다.
  • 프레젠테이션 레이어, 웹 요청과 응답을 처리(view로 응답하지 X)

@Service

  • 비즈니스 로직이나 responsitory layer 호출하는 함수에 사용한다.
  • 서비스 레이어, 내부에서 자바 로직을 처리한다.

@Repository

-퍼시스턴스 레이어, DB나 파일같은 외부 I/O 작업을 처리한다.

@configuration

  • @configuration클래스에 적용하고 @Bean을 해당 Class의 method에 적용하면 @Autowired로 Bean을 부를 수 있음
//configuration 클래스에 적용한 예시
@Configuration // Spring Bean에 등록 [MVC 컴포넌트]
public class SecurityConfiguration {...}

@Entity

  • DB테이블과 연결된 클래스 매핑

@Slf4j

  • 스프링 로그 메서드 지원(요청들의 기록을 남길 수 있음)

@Autowired

  • 속성(필드), Setter method, Constructor(생성자)에서 사용하며 Type에 따라 알아서 Bean에 주입
  • 자동으로 의존하는 다른 객체를 찾아 연결해주는 어노테이션

@component @Bean

  • @Component는 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 어노테이션
@Component(value="example")
public class Example{
    public Example() {
        System.out.println("ex");
    }
}
  • @Bean는 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들려고 할 때 사용되는 어노테이션
    • ex. ArrayList와 같은 라이브러리를 Bean으로 등록하기 위해서는 별도로 해당 라이브러리 객체를 반환하는 Method를 만들고 @Bean 어노테이션을 사용
@Bean
public ArrayList<String> array(){
    return new ArrayList<String>();
}

0개의 댓글