봄 노트 정리


봄 노트 정리 1

주석이란 무엇입니까?

  • Java 5부터 새로 추가된 구문 요소
  • 사전에는 “메모”의 의미가 있습니다.

  • 주석처럼 @를 추가하여 Java 코드에 특별한 의미를 추가합니다.

  • 프로그램에 대한 데이터를 제공하고 코드에 정보를 추가하는 공식적인 방법
  • 주석을 사용하면 코드의 양을 줄이고 유지 관리를 간소화하며 생산성을 높일 수 있습니다.

@콩

  • 개발자가 작성한 메소드에 의해 반환된 객체를 Bean으로 변환하는 Annotation
  • 주로 @Configuration으로 주석이 달린 Spring을 구성하는 클래스에 들어가는 메서드를 선언합니다.

@건설

  • 주석이 달린 클래스가 Bean으로 구성된 클래스임을 Spring IOC 컨테이너에 알리는 주석입니다.

@EnableAutoConfiguration

  • 이전에 정의한 라이브러리를 Bean으로 등록하는 주석
  • (미리 정의된 모든 라이브러리가 등록되는 것은 아니지만 특정 조건이 충족되면 Bean으로 등록됩니다.

    )

@요소

  • 개발자가 작성한 클래스를 Bean으로 전환
  • 싱글톤 클래스 빈 생성을 위한 주석
    • (@Scope를 통해 싱글톤이 아닌 방식으로 빌드할 수도 있습니다.

      )
  • 선언적 주석
  • (패키지 스캔에서 이 주석은 “이 클래스를 정의했습니다.

    빈으로 등록하십시오”를 의미합니다.

    )

@ComponentScan

  • @Component, @Service, @Repository 및 @Controller와 같은 주석을 스캔하고 빈으로 등록하는 주석

@조절기

  • Spring의 컨트롤러 역할을 지정하는 주석

@RestController

  • 객체 데이터를 json 및 xml 형태로 반환할 목적으로 사용되는 주석
  • @Controller와 결합된 @ResponseBody의 주석
  • @Controller 주석과 달리 @RestController 주석이 달린 컨트롤러 클래스의 각 메서드에 대해 @ResponseBody를 추가할 필요가 없습니다.

*) 컨트롤러는 주로 사용자의 요청을 처리한 다음 객체를 지정된 보기로 전달합니다.

@서비스

  • Spring 서비스 역할을 지정하는 주석

*) DB에 접근하는 DAO를 이용하여 비즈니스 로직을 수행하고 결과를 전달받는 서비스이다.

*) DAO는 단순히 mysql 서버에 접근하여 sql 쿼리를 실행할 수 있는 객체입니다.

@저장소

  • Spring 저장소의 역할을 지정하는 주석

*) Entity가 생성한 DB에 접근하기 위한 메소드를 사용하기 위한 인터페이스인 JpaRepository를 상속받아 모든 기본 동작이 가능하다.

@요청 매핑

  • 요청이 특정 URL로 전송되면 들어오는 요청을 특정 메서드에 매핑하는 데 사용되는 주석이 컨트롤러에서 사용됩니다.

  • 가치곡과 메소드곡을 주로 사용한다.

    • (value는 요청할 URL을 정의하고, method는 http 메소드 중 요청을 받는 메소드를 정의)

@PostMapping
@GetMapping
@PutMapping
@DeleteMapping
@패치매핑

  • Spring 4.3부터 Spring MVC 컨트롤러 메서드에 대한 주석을 추가했습니다.

  • 각 주석은 HttpMethods와 일치하며 메서드 단계에서 사용할 수 있습니다.

// 변경 전
@RequestMapping(values = "test", method = RequestMethod.GET)

// 변경 후
@GetMapping(values = "test")

@요청 본문

  • HttpRequest body의 requestBody 내용을 Java 객체에 매핑하는 역할
  • 클라이언트로부터 요청이 들어오면 DispatcherServlet은 먼저 HttpRequest의 타입을 확인하고 MessageConverter를 통해 전체 요청 본문인 requestBody를 변환하여 메서드로 보낸다.

*) GET 방식의 요청은 URI나 URL 파라미터로 전달되기 때문에 해당 요청은 @RequestBody 어노테이션을 통해서는 받을 수 없다.

@ResponseBody

  • Java 개체는 HTTP 요청의 본문 콘텐츠에 매핑되어 클라이언트로 전송됩니다.

  • 반환된 객체는 반환 유형과 일치하는 MessageConverter에 의해 적절한 유형으로 변환되어 클라이언트로 전송됩니다.

  • 반환 시 json 및 xml과 같은 데이터가 반환됩니다.

@RequestParam

  • URL이 매개변수 값과 이름을 함께 전달할 수 있도록 하는 주석
  • 주로 GET 통신에 사용
  • 매개변수에는 4가지 유형이 있습니다.

    • defaultValue : 기본값 설정
    • name : 바인드할 파라미터의 이름
    • 값 : 이름과 같은 의미
    • 필수: 필수 값을 사용할지 여부를 선택합니다.

      • 예) /user/test?id=1 과 같이 사용

@경로변수

  • URL 경로 주소에 사용되는 값을 매개변수로 사용할 수 있도록 하는 주석입니다.

  • 각 요청 중 하나만 사용할 수 있습니다.

    • 예) /user/test/1과 같이 사용

@Autowired

  • Spring Framework에서 지원하는 종속성을 자동으로 연결하여 Bean을 주입하는 기능이 포함된 주석
  • 적절한 주석을 지정하면 Spring 컨테이너가 적절한 Spring 빈을 자동으로 찾아 삽입합니다.

  • 다른 종속성 주입이 있지만 일반적으로 생성자 주입을 선택합니다.

@SpringBootTest

  • Spring Boot Test에 필요한 종속성을 제공하는 주석

@시험

  • Junit에서 테스트할 항목을 표시하는 주석

@법인인

  • JPA를 사용한 주석 매핑 테이블 및 클래스
  • 이 주석을 사용하여 JPA는 적절한 클래스를 유지합니다.

  • JPA에서 사용할 엔터티 이름은 name을 통해 지정할 수 있습니다.

  • 기본 생성자가 필요하며 변수를 최종적으로 선언할 수 없습니다.

@ID

  • 특정 속성을 기본 키로 지정하는 주석

@GeneratedValue

  • 기본 키 값을 자동으로 생성하는 주석
    • IDENEITY: 기본 키 생성을 DB(Mysql)에 위임
    • SEQUENCE: DB 시퀀스(ORACLE)를 통해 기본 키 할당
    • TABLE: 키 생성 테이블 사용(모든 DB 사용 가능)
    • AUTO: JPA는 선택한 DB에 따라 전략을 자동으로 선택합니다.

@나뉘다

  • 개체 필드를 테이블 열에 매핑
    • 이름: 필드에 매핑할 테이블의 열 이름을 지정합니다(기본값을 필드 이름으로 대체).
    • 삽입 가능
      • true : 엔터티 저장 시 필드 값 저장
      • false : 필드 값이 저장되지 않음
    • 업그레이드 가능
      • true : 엔터티가 변경되면 값이 변경됩니다.

      • false : 엔터티가 변경되어도 값이 변경되지 않음
    • 테이블: 엔터티를 두 개 이상의 테이블에 매핑하는 데 사용됩니다.

    • nullable: null 값 허용 여부 지정
      • (거짓: 0이 아닌 제약 조건)
    • unique: 열에 고유성 제약 조건을 적용합니다.

    • columnDefinition : DB 컬럼 정보를 직접 부여
    • length : 글자 길이 제한
      • (문자열 타입일 때 사용)

롬복의 시그니처 노트

@세터

  • 클래스의 모든 필드에 대한 setter 메서드 자동 생성

@얻는 사람

  • 클래스의 모든 필드에 대해 getter 메서드를 자동으로 생성합니다.

@AllArgs 생성자

  • 클래스의 모든 필드 값을 매개변수로 받는 생성자를 자동으로 생성

@NoArgs 생성자

  • 클래스의 기본 생성자를 자동으로 생성

@ToString

  • 클래스의 모든 필드에 대해 toString 메서드를 자동으로 생성합니다.