[DAY62] DI, Ajax

NA YE SOM·2023년 10월 5일





DI(Dependency Injection)

  1. DI(Dependency Injection)
    2






class만들때 class에다가 component 붙이면 끝임

-> paging 처리 등 우리가 만드는것들은 component 가 편함

-> 파일 첨부를 처리할때 class를 가져다 써야하는데 bean으로 가져다 써야한다든지
-> 서비스를 bean태그에 만들어서 놓고 Dao 도 bean에다가 가져다 둠(우리가 만든건 component 붙이는것이 제일 편함)


-> @Controller : spring이 가져다 씀

-> @Service : component를 포함하고 있어서
-> @Repository : service 전용 component 가 있고 service dao component
-> 서비스하고 다오의 객체 생성작업을 하려고 함

-> BoardDto가 2개이면 타입이 일치하는 것을 가지고 오는 Autowired는 혼동이 옴
(그 뒤에 이름을 봄)







-> 생성자의 autowired도 생략가능함(스프링 5이니까)



-> 새로운 방식으로 연습하기 !

★★★(앞으로 우리가 사용할 방식)






-> component 찾는 스캔, 위치가 지정이 되어있어야 함
-> servlet context가 그 일을 함



★★★3가지 중 한가지 방법 하기!!

-> 가지고 오는 방법 : Autowired

1. 필드 2. 생성자 만들어서 붙일것 3. setter만들어서 붙일것












Ctrl + /(슬래쉬) : 주석풀기


-> 현재 내가 null값인데 null값을 못바꾸는 final로 인식해서 field주입이 불가능함


final처리하고 생성자로 처리하는것

★★★(실무) 선택지가 많았는데 선택지가 사라짐 (이것만 쓰면됨)


-> final처리하면 생성자만 살아남을 수 있음



-> autowired가없어도 잘 돌아감

Spring 4부터는 생성자의 autowwired도 생략가능 (lombok를 사용하는경우 : allargsconstructer이용해서 생성자 대체하고 자동주입을 기대할 수 있음)
-> autowired가 없는 코드도 있음 (최종적으로 없어짐)

-> allargsconstructer는 오버임 (지우기)

final 전용 allargsconstructor 따로 있음 :

final field에 필수주입이라는 개념 필요 :


-> 자동주입 안될때는 오류를 발생시킴

final field값은 requiredargsconstructor 이용해서 채워준다.



06_DI_ex

web.xml : 한글 인코딩 필터 갈아치우기








-> bean을 만들어두는 자바 클래스 역할


1. di를 위핸 첫단계 : container 타입의 객체 3개가 등록되었다


setter형식을 이용하려는건 매개변수 한번에 3개의 변수를 받으려는것

생성자로 만들기


-> autoweird는 어떤걸 기준으로 가져오는가?

(타입이 같으면 가지고온다)

실제로는 타입이 우선인데 타입이 같은게 3개나 있어서 이름 가지고 가지고옴


field에 autoweird는 붙이지 말기





DAO : service는 dao를 필요로 함




-> 그래도 이름 맞추기




-> setter 추가






-> 처음 시작시 /슬래쉬 있어도 되고 없어도 됨


-> 파라미터로 전달된다는 이야기임




---> controller 작업 마침

jsp 만 작업해서 목록보기랑 상세보기 작업하기



board 폴더 추가






-> 상세보기는 상세보기할 번호의 정보가 필요함



★★ Configuration 을 이용한 객체 생성


-> DAO을 제외하고 이 구조 역시 실무에서 사용가능


<빼먹은 부분> - MVC 에서 배우는 부분

03_MyController03




-> 고정 주소가있을때는 빼서 처리함(밑에있는애들은 value만 써서)



Spring MVC없이 배우는건 안됨(Spring boot 넘어가기전) -> 배웠던것이 바뀌는 개념임


(내일) 오라클 열어서 시작함

Ajax : 데이터를 응답시키는 것(페이지를 고정시키고 안바꾸는거라서)

  • 라이브러리를 바꾸기
    (spring MVC에서 가장 많이 사용하는 라이브러리 -> Jason 이라는 라이브러리임)



-> 메이븐 업데이트 잊지말기


-> index.jsp 복붙

ajax의 기본 : Page를 바꾸지 않고 데이터를 왔다갔다 하기




=> 처음가져오는애라 다운로드 됨(기다리면)

객체나 맵 리스트를 넘기든 넘기기만 하면됨 -> 할일 생겼다하고 jason으로 바꿈 (코드는 단한줄도 안들어감)
-> 인기가 좋음(할일이 거의없음)


주고받는 데이터의 타입에 따라서 실습해보기!!




-> 3.5 버전 minified 버전


-> 3.5 버전 minified 버전





목록으로 반환, 개별로 반환하는것 연습해보기








Controller 부터 새로운 코드있음












-> ajax 처리할때 뭐가추가로 필요한 것



-> 응답데이터 타입을 적어줘야함
(list : 받는쪽에서는 jason이라고 적어놓음) -> 보낼때도 jason 응답이라고 적어야함



-> Jakson data binder 가 jason이네 하고 동작함 (jason 데이터로 바꿔서 보냄)
-> 변환하는 코드 단 한줄도 적지 x
(항상 만들어서 jason 데이터 만들어서 string으로 만들어서 보냈음)



-> Dao Service는 코드가 똑같음
-> service쪽 dao쪽 코드는 달라지지 않음


-> 할일이 줄어든건 명확함 (코드가 짧아져서)




-> 이대로 두면 목록은 계속해서 쌓이기만 하고 초기화되지는 않음
(
-> 새 목록을 가져와서

-> 여러번 눌러도 한번만 뿌려짐(눌렀을때 기존의 목록을 지우고 다시 뿌림)

가지고 온 목록에 click event를 걸어줌(뽀로로를 클릭하면 뽀로로가 나오면 됨)

#list > 밑에 있는 div를



-> 클릭이 원래 안됨

-> 이벤트 먹이는 메소드가 다름
(대상을 document로 하기)



-> 다른 이벤트에서 직접적인 인식이 안되고 이벤트 동작 전부터 있었던 대상

-> html 태그도 괜찮고 원래 있었던 태그를 시작으로 가져다두면 됨

★★★ event 이해 못하겠으면 다 이렇게 하기


-> 어떻게 하면 이름을 보낼 수 있을까?
(이 모습만으로는 보내는것이ㅂ 불가능)



-> span 태그 내부의 text 가지고 오는것


-> 뒤에 값만 하위 태그 span의 내부 text값을 넘겨주는 것으로 접근하기





-> ajax 3개 준비 : 조금씩 버전이 달라짐


할일이 있으면 service가 하는것이 좋음




-> 전부 객체 형태로 만들어서 오고 있음
(DTO 는 객체로 만들어서 전달된다 : 객체 하나로 만들어서 전달됨)










-> 2군데 정도 바꿔주기


-> ajax service 2번정도 쓰기







-> 유일한 차이는 responsebody가 없다

오류찾을때 항상 첫오류를 찾아야 함













-> .찍으면 data몇개 보임


-> application json value-> 그냥 jason data됨


-> 응답타입도 media type이라는애가 field값도 가지고 있음

-> 날아가는것 없음

Dto 대신 Map을 만들어서 반환해도 똑같이 잭슨이 처리함 : list에 map을 넣는 것으로 바꿔도 똑같이 동작함(Jason은 map이나 dto 동일하게 처리함)

profile
개발자 velog

0개의 댓글