Java 어노테이션

이은지·2025년 1월 30일
0

개념

목록 보기
8/8

Annotation 정의

  • 코드에 정보를 추가하는 정형화된 방법
  • 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소
  • 코드가 깔끔해지고 재사용이 가능

@Configuration

  • 스프링 IoC Container에게 해당 클래스가 Bean 구성 클래스임을 알려주는 어노테이션 @Bean을 해당 클래스의 메소드에 적용하면 @Autowired로 빈을 부를 수 있다.

@Autowired

  • 필드, setter메소드, 생성자에 사용하며 타입에 따라 알아서 Bean을 주입해주는 역할을 한다.
  • @Autowired을 사용하면 스프링이 자동적으로 값을 할당한다.
  • Controller 클래스에서 DAO나 Service에 관한 객체들을 주입시킬 때 많이 사용한다.
  • Bean을 주입받는 방식(3가지)
    1) @Autowired
    2) setter
    3) 생성자: @AllArgsConstructor 사용, 스프링에서는 생성자를 통한 방식을 권장한다.

@Component

  • 개발자가 직접 작성한 클래스를 Bean을 등록하기 위한 어노테이션
  • @Component 어노테이션이 있는 클래스들에 대하여 Bean 인스턴스를 생성한다.

@Bean

  • 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들려할때 사용되는 어노테이션
@Configuration
public class ApplicationConfig {
	@Bean
    public ArrayList<String> array() {
    	return new ArrayList<String>();
    }
}
//ArrayList와 같은 라이브러리 등을 Bean으로 등록하기 위해서는 별도로 해당 라이브러리 객체를 반환하는 메소드를 만들고 @Bean을 사용하면 된다

@Controller

  • Spring MVC의 컨트롤러로 사용되는, 클래스 선언을 단순화 시켜주는 어노테이션
  • API와 View를 동시에 사용하는 경우에 사용
  • 대신 API 서비스로 사용하는 경우는 @ResponseBody를 사용하여 객체를 반환
  • view return이 주목적이다.

@RestController

  • Spring에서 컨트롤러 중 View로 응답하지 않는 컨트롤러를 의미한다.
  • view가 필요없는 API만 지원하는 서비스에서 사용
  • @RequestMapping 메서드가 기본적으로 @ResponseBody 의미를 가정한다.
  • data regurn이 주목적이다.

@ResquestBody

  • 클라이언트 -> 서버 요청일때 사용
  • json 기반의 HTTP Body를 자바 객체로 변환

@ResponseBody

  • 서버 -> 클라이언트 요청일때 사용
  • 자바 객체를 json 기반의 HTTP Body로 변환

@RequestMapping

  • 요청 URL과 컨트롤러 메서드를 매핑
  • 특정 URL이 호출될 때 어떤 메서드가 실행될지를 지정할 수 있고 value 속성은 매핑할 URL을 지정한다.
  • ex) @RequestMapping(value = "/hello", method = RequestMethod.GET)

@RequestParam

  • URL에서 파라미터 값과 이름을 함께 전달하는 방식
  • HttpServletRequest의 request.getParameter의 기능과 동일
  • 게시판 등에서 페이지 및 검색정보를 함께 전달할 때 많이 사용
  • RequestParam은 URL상에서 데이터를 찾는다.

CrossOrigin

  • CORS 보안상의 문제로 브라우저에서 리소스를 현재 origin에서 다른곳으로의 AJAX요청을 방지하기 위해 사용
  • @RequestMapping이 있는곳에 사용하면 해당 요청은 타 도메인에서 온 ajax요청을 처리한다.

Model

  • 메서드에 파라미터로 넣어주고 String 형태로 반환
  • Model에 값을 넣을 때 addAttribute()사용

e.printStackTrace()

try {
    // 예외가 발생할 수 있는 코드
} catch (Exception e) {
    e.printStackTrace();
    // 추가적인 예외 처리 또는 로깅 등을 수행할 수 있음
}
  • printStackTrace를 통해 콘솔에 출력된 예외 정보는 예외의 발생 위치부터 호출 스택을 거슬러 올라가며 출력된다.
  • 개발자는 이 정보를 통해 예외가 발생한 위치와 그 이유를 파악하고, 코드를 수정하여 예외를 해결한다.
    주의: 실제 프로덕션 코드에서는 printStackTrace를 사용하여 예외 정보를 콘솔에 출력하는 것은 권장되지 않는다. 보통은 로깅 프레임워크를 사용하여 로그를 남기는 것이 더 적절하며, 콘솔 출력은 개발 중 디버깅 용도로만 사용되어야 한다.

0개의 댓글