package sneeThunder

22.05.24_수업정리_ 본문

WebPrograming/수업정리

22.05.24_수업정리_

스니썬더 2022. 5. 25. 14:43

1교시

 

스프링 필수정보

<리뷰>

 

bean객체 생성하는 어노테이션 4종

1. @Controller

2. @Service

3. @Component (vo,dto위에 붙음) : 부모!! 스프링워크가 bean과 동일하게 취급

4. @Repository (dao)

-> Bean객체 생성및 등록

@Component를 제외하고 bean처럼 만들면 제대로 작동X

 

◇Bean 객체 생성및등록을 xml태그로 만드는것과 어노테이션으로 만드는것의 차이점.

두개 같음

다른 라이브러리에 있는 객체들은 생성할때 어노테이션을 붙이지 못하기 때문에 bean 즉 xml파일에 작성하는거임.

 

context.xml

선언만해서 의미가 없으니 꺼내서 읽어야 한다 . 따라서 Bean을 생성만 하는게 아니라 사용을 해야한다,

bean객체 사용하는 행동

Bean객체를 꺼내와 사용하는 행동 = @Autowired

 

@Autowired는 자료형을 기준으로 찾음.

 

 

controller

-> 같은 객체를 여러개 선언하고 @Qualifier사용으로 명확하게 뭘 사용할지 명시하지 안한 경우 오류 발생함. 

cf. 오류메세지의 하이라이트는 맨끝의 문장.

@Qualifier @Qualifier("id명")

 

 

@interface

 스프링프레임워크가 기존에있는 인터페이스에 추가적으로 기능을 준거임

 

tip. 알고있는 키워드에 @가 붙어있으면 원래기능에 플러스 알파로 기능이 있는거구나 생각하기.

 

 

2교시

 

import 와 @Autowired는 아무런 상관이없어요~

import 패키지 소속
 @Autowired 같은 자료형을 끌어와 사용

 

그룹웨어 같은 경우

 

그룹웨어의 타깃은 1차적으로 회사가 그 회원.

따라서 그 회사만을 위한 그룹웨어는 거의 없다.

그래서 같은 이름의 클래스가 존재할 가능성이 있음 -> import로 패키지 소속을 알려주는거임

 

 

어노테이션 부분만 제외하기

밑줄친 태그 부분만 빼주겠다
정규표현식으로 제거도 해줄수있음.
패키지는 상관없고 서비스로 끝나는애들 제외

로그 먼저하고 트랜잭션 마무리 하겠슴다

 

 

스프링 프레임워크 입장에서는 두개가 되게 달라서 강조를 하는거임.

proxy를 거쳤다가 가는 이유 ? 안전한지 확인하기 위해

누군가가 사이트에 접근할때 proxy서버가 접근을 거부나 허용할수있다.

ex) 유튜브가 중국쪽 ip차단함.

 

 

프레임워크가 프록시 개념을 가지고 aop를 구성함/

target를 진입전/후에도 프록시를 거쳤다가 나가게됨.

프록시서버는 runtime시 생성

PointCut에서 걸리면 가고 있던 방향으로 가는걸 알고 가로 챘다가 전처리 어드바이스 처리후 

타켓 A로가서 A동작을 함 처리후 원래는 A한테 다시 전달되는 리턴값을 후처리가 받음. 

받았다가 다시 원래 왔던 A한테 전달함. -> AOP개념으로 기억하는게 중요

 

3교시

클라이언트가 target object를 호풀하고 target object가 다시 클라이언트한테 전달해줌.

로그를 찍어주는 Adivce부분

 

0. root-context.xml 막아주기

root-context.xml 

1. 어드바이스 클래스 생성

dao
이렇게 작성해주면

 

이렇게 동작되는거 처럼 됨

AdviceLog를 실제로 적용시키는건 Weaving 이라는애가 해줌.

Weaving

 

pom.xml열기

<!-- AspectJ -->

rt = runtime

rt로 weaving 작동 X

https://mvnrepository.com/artifact/org.aspectj/aspectjweaver/1.9.9.1

변경
추가

여기까지만 하고 Start up 을 시키면.. 동작안함.

객체 생성을 해줘야해!!

 

방법 1

참고

@Repository -> 계속 저장

 

 

방법 2 - 어노테이션

@Service 또는 @Component 사용

 

HomeController에서 @Controller를 사용했기때문에 아래의 어노테이션을 사용-인지 할 수 있는거 처럼

@Aspect 를 해주면 인지하고 처리해줌 따라서 AOP Advice 클래스에는 @Aspect 를 꼭 반드시 넣어줌,

 

@Aspect : @Pointcut, @Before 인지하는 역할

 

4교시

단, 여태 작성한 것들은 전부 어노테이션을 사용함 .

하지만 xml 파일로 작성할경우 @Aspect 역할을 해주는 기능이 따로 있음.

 

@Component만 붙여준다고 객체가 생성되는건 아니다.

@Aspect 써준다고 @Component에 기능을 씌어주나? ㄴㄴ

server-context.xml

이거 작성해줘야함,

 

이렇게 작성가능함,

 

@Around

 

최종

이렇게 해주면 

A한테 리턴해줌.

 

어노테이션 메세지 순서 위->아래

 

어노테이션 주석처리시

 

파이널때 log 처리 해주기

 

5교시

 

오브젝트에서 제공하는 toString

~xml로 작성하는 방법(참고)~

 

servlet_context.xml

이렇게 쓰면 안쪽에서밖에 포인트컷을 사용할수 있기 때문에

바깥에 쓰려면 이렇게 써야함 

 

 

Transaction위한 adivice 설정

root-context로 옮겨줌

 transaction-manager => ref역할

이렇게 X
이렇게 작성

 

소스 코드 참고하기

 

'WebPrograming > 수업정리' 카테고리의 다른 글

22.06.02_수업 정리  (0) 2022.06.02
22.05.30_수업정리  (0) 2022.05.30
22.05.23_ 수업 정리(평가일 전날...)  (0) 2022.05.24
22.05.20 sping수업(6차시)_  (0) 2022.05.20
22.05.19_spring 수업(5차시)_  (0) 2022.05.20
Comments