20220525 TIL

Don Lee·2022년 5월 26일
0

EpiTIL

목록 보기
16/24
post-thumbnail

  • 15줄 @EnableJpaAuditing: Auditing 활성화 하기위한 annotation

    Audit는 감독하고 검사하다는 뜻으로, 해당 데이터를 보고 있다가 생성 또는 수정이 발생하면 자동으로 값을 넣어주는 편리한 기능.
    https://web-km.tistory.com/42
    https://leo0842.github.io/spring/date-auto-create/

  • 16줄 @SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan

    • @EnableAutoConfiguration: jar properties를 기반으로 자동으로 의존성 설정
    • @ComponentScan: @Component가 적용된 클래스들을 스캔하여 자동으로 빈 등록
    • @SpringBootConfiguration: 사용자가 추가적으로 빈이나 설정 클래스들을 등록 가능하게 함
      - 스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈bean이라고 부른다. 자바빈 또는 엔터프라이즈 자바빈EJB에서 말하는 빈과 비슷한 오브젝트 단위의 애플리케이션 컴포넌트를 말한다. 동시에 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트를 가리키는 말이다. - 토비의 스프링3.0
      • spring bean은 Spring Ioc 컨테이너에 등록되어 관리되고 있는 객체
        • 클래스는 패키지화 되어야한다.
        • 멤버변수는 property(프로퍼티)라고 부른다.
        • 접근제한자는 private
        • 외부접근은 getter, setter로 접근한다.
        • 프로퍼티가 boolean이면 get이 아니라 is사용해도 된다.
          https://dev-nomad.com/71

    https://seongmun-hong.github.io/springboot/Spring-boot-EnableAutoConfiguration
    https://yejun-the-developer.tistory.com/3

  • 12줄 @RequiredArgsConstructor
    • final 필드에 대해 생성자를 만들어주는 lombokannotation

    • Spring Framework의 DI(의존성주입) 중 Constructor Injection(생성자 주입)을 임의의 코드 없이 자동으로 설정

      • DI: 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 다이나믹하게 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다.
        https://mangkyu.tistory.com/150
      • CI: 생성자를 통해 의존 관계를 주입하는 방법
        https://mangkyu.tistory.com/125
    • 새로운 필드를 추가할 때 다시 생성자를 만드는 번거로움을 없앨 수 있다. ( @Autowired 사용하지 않고 의존주입 )

    • @RequiredArgsConstructor이 어떻게 구동하는지 정확히 알아야 예상치 못한 오류를 막을 수 있다.

      @RequiredArgsConstructor 적용 전

      @Component
      public class LombokTest {
       
          private final MyService myservice;
          private final String id;
       
          @Autowired
          public LombokTest(MyService myservice, String id) {
              this.myservice = myservice;
              this.id = id;
          }

      @RequiredArgsConstructor 적용 후

       @Component
      @RequiredArgsConstructor
      public class LombokTest {
       
          private final MyService myservice;
          private final String id;
      }

      https://byul91oh.tistory.com/432

      https://boomrabbit.tistory.com/209

      https://iwannafullstack.tistory.com/3

  • @RestController
    @RestController@Controller@ResponseBody가 추가된 것입니다. 당연하게도 RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것입니다. 최근에 데이터를 응답으로 제공하는 REST API를 개발할 때 주로 사용하며 객체를 ResponseEntity로 감싸서 반환합니다. 이러한 이유로 동작 과정 역시 @Controller@ReponseBody를 붙인 것과 완벽히 동일합니다.
    [https://mangkyu.tistory.com/49](https://mangkyu.tistory.com/49)
  • @RequestBody
    @RequestBody는 클라이언트가 전송하는 Json(application/json) 형태의 HTTP Body 내용을 Java Object로 변환시켜주는 역할을 한다.

  • @NoArgsConstructor Lombok을 사용하면 생성자도 자동으로 생성할 수 있습니다. @NoArgsConstructor어노테이션은 파라미터가 없는 기본 생성자를 생성해주고, @AllArgsConstructor어노테이션은 모든 필드 값을 파라미터로 받는 생성자를 만들어줍니다. 마지막으로 @RequiredArgsConstructor어노테이션은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어줍니다.


  • @MappedSuperclass
    일반적으로, 상속 관계 매핑 전략에서 부모 클래스와 자식 클래스 모두 데이타베이스 테이블과 매핑을 한다. 이와 달리, 부모 클래스를 상속받는 자식클래스에게 매핑 정보만 제공하고 싶을때 이 어노테이션을 사용하면 된다. 엔티티 종류에 상관없이 공통으로 가지고 있어야 하는 정보가 있다면 ( ex. 데이타 생성시간, 수정시간 등 ) 공통 클래스로 추출하고 이를 상속받는 방식으로 구현할 때 사용 한다. 그러나 엔티티는 엔티티만 상속받을 수 있기 때문에 엔티티가 아닌 클래스를 상속받기 위해서 @MappedSuperclass 를 사용한다.
    https://feco.tistory.com/13

  • DTO(Data Transfer Object): 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)
    • [Java] Map보다 DTO 클래스를 사용해야 하는 이유
      https://mangkyu.tistory.com/164
    • DAO(Data Access Object): 데이터베이스의 data에 접근하기 위한 객체. DataBase에 접근 하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용함.
    • VO(Value Object) 값 오브젝트로서 값을 위해 쓰입니다. read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가집니다. DTO와 유사하지만 DTOsetter를 가지고 있어 값이 변할 수 있습니다.
    https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html
profile
쾌락코딩

0개의 댓글