[DAY66] Junit, Logback ,AOP

NA YE SOM·2023년 10월 11일

junit 사용을 위해서





-> 어제 dependency 남아있는것 : logback하고 Slf4j가 classic에는 포함되어있음
-> 지워도 된다


-> 지워도 된다



10_SpringJdbc_aop

-> spring에서 다뤄보지않은 신규개념임

9장 pom.xml => 10장 pom.xml(property부터)

9장 web.xml -> 인코딩 필터

maven update 하기

log4xml 삭제, 위에 2개파일 가져다놓기



-> 태그로만들어주면 원하는대로 custermizing하는데 제한이 따름
-> 패턴을 layout이라는 개념으로 바꾸기
-> layout을 통해서 작업하기!!

-> 패턴으로 출력을 안만들고 자바로 출력을 만드는 방식 : 조건에 따라 출력형태를 다양하게 만듦
-> class 추가하고 class layout 출력형태로 바꾸는것 해보기









doLayout









-> pattern 지우고 layout으로 바꾸기

-> 찍는 방법을 pattern대신에 자바로 연결함

-> 다지우기

log.back.qos.ch





-> 인코더 종류 바꾸기!!(복붙해서가져가기)



---> 로그 바꿔봄

-> change

SpringJDBC는 부담없이 듣기 -> Mybatis로 할것




-> 5.3.3 변수처리

-> Maven update하기


-> 우리가 만든 class는 component붙이는 방식이 편함

-> bean태그아니면 @bean 으로 객체생성해야함
-> 자바로 만들어야 boot에서도 가져다쓰기 편함

config 패키지 추가




-> 2개 bean이 있어야 함
-> jdbc template제작할때 :




-> class driver이름 복붙


-> datasource넣어주세요


-> jdbcconnection 안씀


-> 주입할 수 있음

-> 쿼리문만 빼고 전부 out 시키기


-> final 전부 가져다 붙이기



-> query문 처음에 전달하고 preparedstatement에 ?값 채워주는 코드만 처리하는 코드


-> interface는 New를 할 수 없음
-> interface를 직접 구현하면 new할 수 있음


-> 내부에 구현체를 넣는방식

-> PreparedStatement를 사용할 수 있게 매개변수로 제공함


-> 물음표의 값 채워주는 것만 하면됨

수정해보기

-> update도 ps값 채워주는 것이 전부임
-> 익명 inner type으로 추가해서 내부에 익명메소드 구성해서 넣을 수 있게 하면됨
-> insert,update,delete 모두 똑같음



-> (가로)안에 class전달해줘야함

bean property가 객체 속성이니까 어떤 객체에 row 값을 database행을 저장할것인가?/


-> contactdto에 담음



-> ...(말줄임표)는 한개를 전달하든 두개를 전달하든 .. 주고싶은 만큼 주면 됨





-> 수정,등록,삭제 모두 성공함(어떻게 dao바뀌는지 아는가? 부담가지지 않고 듣기!!)

-금요일 평가 : 팀 프로젝트 의견을 받을 에정임

AOP

공통로직을 한번만 작성하지 말고


-> 반복적으로 했던 log작업을 AOP작업을 통해서 할 수 있음
-> depedency 가 추가로 필요함



-> aspectj Weaver








-> maven update하고 시작하기!



aop 패키지



BeforeAop





-> *(에스터리스크) 모든 반환타입을 이야기함


-> 모든매개변수는 ..두개임




-> 이름은 아무의미없음




-> configuration으로 옮겨주기
(한번만 붙으면 됨)


->왜 configuration에 두는가? aop도 bean으로 만들어두고 처리하는것이라서

우리가 만든 class는 bean으로 만들때 component많이씀




da0)








-> Before 어드바이스 동작 계속 찍힘


-> 대체하려는 것임(매번 넣어놨으니까 찍히는것)
-> 메소드마다 로그 찍는거 넣어둠

advice에서 log찍는거 해드림


->이름도 다르고 종류도 달라서 ->이걸 map으로 바꾸기
-> map으로 변환한뒤에














-> 배열 주소값 나와서 피곤함

배열 클릭해주는 helper클래스










AfterAop





log 모양 바꾸고 싶다 -> MyLogbackLayout 가서 바꾸는것


-> 여기서 만드는 거 순서 바꾸면 됨
(자바로 해놓은 이유가 xml보다 훨씬 더 많이 알아서)

around는 전,후에 모두 동작한다

before도 전, around도 전임
after가 후인데 around도 후임
-> (순서) around가 1번,

★★★around -> before순서로 동작함

AroundAop



-> 모든메소드

-> 앞뒤로 실행하고 싶은거 구분해서 넣을수있다
-> 이 문장은 예외처리가 필요해서 오류가 남


-> throwable : exception의 부모임

thorwable을 exception에 저장하는거 불가능함

-> 반대로 저장하는 것은 안된다


-> object 반환이 필요한 이유는 proceed 진행메소드 이전으로 구분해서 around처리할 수 있게금 해주기 위해서

-> around는 앞뒤로 동작할 수 있는 이유가 있음





-> 시간을 밑에다가 가져다두기(동작순서 생각시)




-> before가 먼저 나옴

Before -> Around -> After



-> 서비스단에서 제일 적절한 aop 동작 확인 ; transaction트랜잭션임


-> insert update delete를 실제 동작시키는것
-> 하나의 서비스에 Insert, delete 같이 있을수도 있음
->그런 경우, transaction 처리필요

(ex) 탈퇴 : insert 한번, delete한번
-> 탈퇴서비스 만들때 insert,delete둘다 있음
-> insert,delete둘다 성공해야함
-> 실패하려면 둘다 실패해야함

=> 회원에서 delete실패함(지우려다가 오류나서)
-> 탈퇴자에도 명단잇고 회원에도 명단이 있음
-> 넣으면 빼야하고 못넣으면 안빼야함
-> transaction(트랙잭션)이라고함
-> transcation 처리대상 : service단으로 잡는것이 좋음
-> insert, update,delete 가 2이상 포함된 service는 transaction 처리를 실제로 해줘야함



-> new를 해서 만든 대상은 다름



-> interface 구현 클래스


-> 자바 표준 connection pool interface임



-> component를 class가장 위에 붙이기 !





-> 자바 표준 class : arrays와 비슷함(arrays가 배열도와주는 class인것처럼 list나 map이나)


-> singleton list에 new 전달하면된다


-> 그냥 만든 규칙을 transactionintersector가 요구한 타입으로 바꾸는 규칙


-> transactionmanager 호출

-> after가 transaction 처리하는걸로



AppConfig에서












-> name에 null값을 전달하는 과정으로


-> 안들어가있는것 확인하는것


-> 반환타입이 의미없음(동작할 애라서)



-> 목록보기로 가면 redirect되었고 exception 발생해서 (예외가발생해서 catch block에 코드가 동작한것)


-> 실패한 데이터가 들어와야함
(transaction 제대로 동작안하면 지금처럼 동작하는게 맞음) -> 하나의 서비스에서는 좋은 상황이 아님
-> 이렇게 남으면 transaction 처리가 안된거라 큰일남
-> 데이터 무결성 담보 못함
-> 모두 실패해야 transaction 이성공함

-> 애만 살아남은 rollback해야함

AOP로 Tranasction 하고 있음
: 좋은점이라면) transaction 수업은 끝남
안좋은점 ) 성능의 영향 미세하게 미칠 수 있음
-> 계속 도는것이 싫으면 : 표시 넣어야 함

-> 메소드마다 표시를 할건데 그럴꺼면 aop 할필요 x

11_mybatis_mockmvc

(통합테스트 : controller를 테스트로 돌릴수 있음-> 전부다 테스트됨)


log4j 지우고




-> 파일이름 바꾸기


hikaricp

Mybatis





-> db관련해서 총 5개씀






-> 해당 프로퍼티를 불러들어서 enviroment 를 제작을 해서 spring이가지고잇음

-> 우리는 이값을 가져다가 써야함

@autowried : 만들어진 bean을 가지고오는것

-> property만 됐다
업로드중..
-> mybatis.xml도 이 자리에 올 예정임

around -> before가 맞음

profile
개발자 velog

0개의 댓글