package sneeThunder
22.05.24_수업정리_ 본문
1교시
<리뷰>
bean객체 생성하는 어노테이션 4종
1. @Controller
2. @Service
3. @Component (vo,dto위에 붙음) : 부모!! 스프링워크가 bean과 동일하게 취급
4. @Repository (dao)
-> Bean객체 생성및 등록
@Component를 제외하고 bean처럼 만들면 제대로 작동X
◇Bean 객체 생성및등록을 xml태그로 만드는것과 어노테이션으로 만드는것의 차이점.
다른 라이브러리에 있는 객체들은 생성할때 어노테이션을 붙이지 못하기 때문에 bean 즉 xml파일에 작성하는거임.
선언만해서 의미가 없으니 꺼내서 읽어야 한다 . 따라서 Bean을 생성만 하는게 아니라 사용을 해야한다,
Bean객체를 꺼내와 사용하는 행동 = @Autowired
@Autowired는 자료형을 기준으로 찾음.
-> 같은 객체를 여러개 선언하고 @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 막아주기
1. 어드바이스 클래스 생성
AdviceLog를 실제로 적용시키는건 Weaving 이라는애가 해줌.
Weaving
pom.xml열기
<!-- AspectJ -->
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에 기능을 씌어주나? ㄴㄴ
이거 작성해줘야함,
@Around
이렇게 해주면
A한테 리턴해줌.
어노테이션 주석처리시
파이널때 log 처리 해주기
5교시
~xml로 작성하는 방법(참고)~
이렇게 쓰면 안쪽에서밖에 포인트컷을 사용할수 있기 때문에
바깥에 쓰려면 이렇게 써야함
Transaction위한 adivice 설정
transaction-manager => ref역할
소스 코드 참고하기
'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 |