06-17 Spring

Ruinak·2021년 6월 17일
0

Spring Lesson

목록 보기
11/23
post-custom-banner

06-16 리뷰

  • file 전송을 위해서는 file 타입의 input 태그가 있어야 함
  • form 태그의 method가 post여야 하며 multipart 인코딩 유형이어야 함
  • multipartResolver는 tomcat의 설정파일인 web.xml에 multipart-config를 사용함

결과적으로 파일 업로드를 위한 설정은 servlet-context의 multipartResolver와 web.xml의 multipart-config를 필요로 함

스프링의 주요 기능

  • DI : 의존성 주입
    - 싱글톤은 스프링이 관리함
    • 컨트롤러도 스프링이 관리함
    • 즉 객체가 하나인 것은 스프링이 관리함(여러개는 관리 못함)
  • AOP : 예로 인터셉터가 있음
    - 프록시클래스 설계를 실행 중에 자동으로 만들어주는 고급기술을 사용
  • 스프링 추상화

게시판 상세보기

  • 파일첨부관련해서 링크 추가
  • 이미지 타입이 아니라면 바로
  • Controller가 요청을 받는 형태는 아님
  • BoardController에 오타 있어서 수정
  • setFilename으로 되어 있어서 파일의 이름이 O로 저장됨
  • setFilename → setFiletype

AOP

  • pom.xml에 AspectJ가 있지만 프록시클래스를 사용하기에는 추가로 aspectjweaver가 필요함
  • 메이븐 저장소에서 aspectjweaver 검색
  • pom.xml에 aspectj의 버전이 이미 있으므로 똑같이 맞출예정
  • 아무 버전을 들어가서 코드 복사
  • pom.xml에 붙여 넣은 후 version을 1.6.10으로 변경
  • src/main/java에서 com.example에 aop 패키지 생성
  • root-context.xml에 aop 패키지를 스캔하는 태그 추가함으로 애노테이션을 사용하면 스프링이 캐치할 수 있음
  • aop를 사용하기 위해서 namespaces에서 aop를 체크해줌
  • beans 목록에 aop가 추가됨
  • 이제 aop로 시작하는 태그 사용가능
  • aspectj 라이브러리를 이용해서 프록시 개체를 자동으로 만들 수 있게 태그 추가
  • 메서드의 실행 시간을 알고싶으면 위와 같이 코드를 작성해야 함
  • 각 메서드마다 알고 싶다면 모든 코드의 위의처럼 코드를 작성해야 하므로 불가능한 작업임
    - 이걸 프록시가 가능하게 해결을 해줌

Controller → ProxyService → Service → Mapper로 진행

  • 이런 구조로 만들면 Controller는 ProxyService를 Service로 인식함
  • 이런 구조가 필요한 이유는 프록시를 사용할 수 있으며, 원본을 유지하기 쉬움
  • 스프링이 자동으로 해주는 것임!

  • com.example.aop 패키지에 LogAdvice 클래스 생성
  • AOP 문법
  • Component를 달아주고 추가적으로 Aspect 애노테이션을 달아줌
    - 주변부 로직(횡단 관심사)
    - Aspect랑 연동되는 애노테이션을 추가적으로 쓸 수 있으며, 설정했던 aspect-autoproxy가 적용됨
  • 자료형은 필수적으로 Object를 받음
  • 다양한 자료형의 메서드를 받아야 하므로 Object로 선언하는 것임
  • 매개변수는 필수적으로 ProceedingJoinPoint를 사용해야 함
  • 전체주소 + 클래스명 + 메서드명 + 매개변수를 다 씀
  • 모든 메서드를 가져오려면 *을 사용
    - Point Cut이 되는 것임
  • Around는 타겟으로 지정할 대상의 앞뒤로 다 작용할 수 있는 강력한 주변부 로직임
profile
Nil Desperandum <절대 절망하지 마라>
post-custom-banner

0개의 댓글