ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java Spring 스터디 1주차
    Spring 2021. 3. 13. 13:10

    * 백기선님의 스프링 기초 입문 (무료) 강좌를 이용하였습니다.

    www.youtube.com/playlist?list=PLfI752FpVCS8_5t29DWnsrL9NudvKDAKY

     

    스프링 입문

     

    www.youtube.com

     

    # 환경 준비

    1)    인텔리제이 설치

    2)    Maven 설치

    3)    https://github.com/spring-projects/spring-petclinic.git 연결

    4)    터미널에서 mvnw package 입력 / java -jar target/~~~~~~.jar 입력

    • 윈도우는 mvnw package 또는 mvn package로 입력해야 함.

    • 또한 java -jar target/ 뒤에는 앞의 mvnw package를 통해 얻은 .jar 파일 이름을 넣어야함.

     

    # 프로젝트 구조 살펴보기

    (tmi 대강 어떤 구조로 흘러가는 지 파악은 했으나, 파일이 너무 많아 이해하기 어려웠음.)

    로그 메시지를 디버그로 확인하는 방법 )

    src > main > resources > templates > application.properties

    logging.level.org.springframework.web=DEBUG

    설정

     

    # Inversion of Control

    =제어권이 이전되었다. 의존성을 관리하는 일을 자기 자신이 아니라 외부에게로!

     

    원래 자신이 사용할 의존성은 스스로 만듬.

    Ex) class OwnerController { private OwnerRepository repository = new OwnerRepository(); }

     

    but 

    내가 사용할 의존성을 누군가가 밖(OwnerController의 밖)에서 줄 수 있게끔 생성자를 통해 받아옴.

    Ex)

    class OwnerController {

    private OwnerRepository repo;

    public OwnerController(OwnerRepository repo) { this.repo = repo; }

     }

     

    # IoC 컨테이너

    ApplicationContext 또는 BeanFactory를 이용. (여기선 ApplicationContext를 이용)

     

    기능 = (bean)을 만들고 엮어주며 제공한다.

    파일에서 OwnerController, OwnerRepository, PetController, PetRepository는 빈(bean)으로 등록됨.

    빈 등록 방법)

    애노테이션

    특정 인터페이스 상속

    직접 빈으로 등록

     

    ApplicationContext가 해당 클래스 타입의 빈을 찾아서 빈을 넣어 줌(의존성 주입).

    주의할 점) 의존성 주입은 빈(bean)끼리만 가능.

     

     

    #Bean

    객체인데 ioc컨테이너(applicationContext)가 관리하는 객체.

    Ex) OwnerController ownerController = new OwnerController() // bean이 아님.

    OwnerController bean = applicationContext.getBean(OwnerController.class) //bean 맞음.

     

    어떻게 bean을 만드는가?

    1) Component Scanning

    ○ @Component

    • @Repository
    • @Service
    • @Controller
    • @Configuration

    2) 일일히 XML이나 자바 설정 파일에 등록

     

    어떻게 이용하는가?

    1) @Autowired 또는 @Inject ->권장

    Ex)

    @Autowired

    Private OwnerRepository owners;

     

    2) ApplicationContext에서 getBean()

     

     

    # 의존성 주입

    @Autowired 를 어디에 붙일까?

    • 생성자 // spring 4.3이후부터 @Autowired 생략가능
    • 필드
    • Setter

     

     

    #AOP

    AOP = 관심사 기준으로 프로그래밍

    공통적으로 하는 일들을 모아 놓기

     

    구현하기

    1)    컴파일 A.java ---(AOP)-àA.class

    2)    바이트코드 조작 A.java -> A.class ---(AOP)-à메모리

    3)    프록시패턴

     

    # 프록시 패턴

    기존코드 건드리지 않고 새 기능 추가하기.

     

    구체적으로 인터페이스를 사용하고 실행시킬 클래스에 대한 객체가 들어갈 자리에 대리자 객체를 대신 투입해 클라이언트 쪽에서 실제  실행시킬 클래스에 대한객체를 통해 메서드를 호출하고 반환 값을 받는지, 대리자 객체를 통해 메서드를 호출하고 반환 값을 받는지 전혀 모르게 처리하는 (https://limkydev.tistory.com/79 참고)

     

    클래스의 메소드를 프록시가 대신 실행해주는 것 같음.

     

     

     

Designed by Tistory.