본문 바로가기
코딩

2022.03.18_28일차_스프링(3)

by 흥뷰자 2022. 3. 18.

학습내용

테스트

파라미터로 
모델

어제 이어서

Restaurant 클래스 만들고 @Component // 스프링이 관리해라 객체다 <context:component-scan>

 

객체생성과 주입

1. 빈을 만들거나 context component 하거나 - 해당 패키지 다 스캔됨 + @Autowired 자동주입 해야 / 이렇게 자동채우기도

2. 또는 @Setter(onMethod_=@Autowired) : 세터를 통해 자동호출. 쉐프의 셋메서드를 호출해서 주입~~ 근데 이 클래스의 셋메서드는 만들어져있지 않는다.  @Data 변수, 기본생성자, 겟 셋 만들어지게

 

또는 @Setter(onMethod_=@Autowired) 

Restaurant rt = new Restuarant(); 어딘가에서 객체가 생성될 때  셋쉐프가 호출되면서 / 물론 스프링이 객체생성 스캔시or빈으로 등록시

rt.setChef(Chef); 이 Chef자리에 스프링이 객체생성해둔 Chef 객체를 자동으로 매개변수값으로 채워라~~ / 이렇게도 자동채우기 / 세터 의존성주입 받을 때 자동주입

 

3. 어노테이션 안쓰고 주입받기

컨텍스트 말고 빈으로 바꾸고 빈은 겹태그 - 객채생성하고 

내부 태그에 <property name="변수이름" ref="채워줄 값, id값" ></property>

 

 


테스트 코드 쓰는 법

TDD 테스트주도개발

메인이 아니라 테스트로 주입 확인/ src/test/java에 패키지 만들어서~~ 메인과 동일하게 만들어서 바로 가져다 쓸 수 있게~~~~

 

직접 뉴 패키지, 뉴 클래스로 만들수도 있고

 

만들 패키지에서 뉴 j유닛테스트 케이스  (유닛프레임워크)

src/test/java 하부에 동일 이름의 패키지가 만들어 진거 보임

내부 작성하고 돌려보기

 

 

테스트 결과

 


롬복 추가

@Data말고

@ToString 

 


 

빈연습

클래스 하나 만들어서 빈등록해서 객체생성, 객체생성할 때 값 채워주기

 

의존성주입 

방법4

 

빈으로 등록하는 아이들 . 홑태그나 겹태그로

 

 

 

 

 

 

 

12:36

기본생성자 없으니까 무조건 데이터 같이 넘겨줘야

 

 

 

네임을 채우려면 까다로움

근데 구분하지 않으면 순서 정확하게 써야함

다른 구분 방법은 index . 이걸 넣으면 순서 바뀌어도 상관없음 

 

또 다른 방법 type 속성

안에 셋메서드 짬뽕으로 쓸소도 있다~~~~~

 

순서대로 자바가 넣긴 하겠지만 개발자가 실수로 롱과 인트 순서 바뀌면 그만인 것. 모호성

 이럴 때 타입으로 구분도 가능. 롱인지 인트인지~~~

불리안과 문자인지 구분이 애매한 경우에도 타입을 줄 수 있다

타입 명시하는게 그렇게 좋은 방법은 아님..

차이 명시

 

타입을 관심둠 

디버그 플러그기 활성화되어있지 않으면 매개변수 안보고 타입만 봄.

디버그 플러그가 활성화도면 이름으로도 비교가 가능해진다. 실행되면서 .class 생성될때 이름까지 저장

기본으로 활성화 체크되어있음

플래그 비활성화 되어있으면 만들어 주는 방법 

생성자 위에 @ConstructorProperties({"매개변수이름1","변수이름2","변수이름3","변수이름4"}) 개수와 순서도 동일하게 맞춰주면 이름까지 저장됨

  순서가 섞여도 잘 찾아감

이런 옵션이 있다~~~~~~~

ConstructorArgument 쓸일이 외부꺼 쓸 때 있을 수도... 태그 속성들 ~~~ 

기본생성자가 있는지, 매개변수 있는 생성자가 있는지, 그런거 뜯어봐야~~~

매개변수가 있는 생성자가 있으면 다 채워줘야

 

 

 

 

빈으로 채우든지

셋메서드로 채우든지

아무것도 안채우고 생성하든지

컴포넌트 스캔으로 해버리든지

 

등록하는거까지 해봄


컨트롤러에서 페이지까지 띄워봄

 

파라미터 받는거~~

jsp에서는

request.getParameter("id"); 이렇게 일일이 해줘야 했지 필드이름만큼 다~

이걸 다시 DTO를 DAO한테 전송하려면 dto.setID(request.getParameter("id")); 해서 보내주고 번거로웠음 

스프링 파라미터 받으려면 스캔뜨고있는 패키지 안에 컨트롤러하나 만들고, 

컨트롤러만들기

컨트롤러 어노테이션과 

리퀘스트매핑으로 전체경로로 설정해주고 "/day03/"

뷰페이지 만들기

views에도 폴더 하나 day03 만들고(리퀘스트 매핑과 이름일치시켜서)

하부에 test01.jsp파일 생성  (void 로 요청경로를 day03/test01 해주려고)

 

이제 할일은 컨트롤러에서 뷰로 가고 응답해줄 수 있도록

요청경로를 추가

겟매핑("파일명그대로")

보이드타입으로 test01(){  메서드 이름도 똑같이

 

}

서버스타트 전에 서버 Add and Remove에 해당 프로젝트 올라가있는거 확인하고 서버 스타트~~

클래스 꼬여서 잘 안될수 있으니까 클린~ (Add and Remove에서 다 내리고 클린하는게 더 확실)

파라미터 보내는 법 get방식은 ?a=10 

 

 

 

@RequestParam

 


view전달 - model 전달자

자바에서 -> view로 데이터 전달

request.setAttribute(String name, Object value); 

꺼내기

model.addAttribute(String name, Object value);

 

자바에서 -> 데이터 추가

session.setAttribute(String name, Object value);

꺼내기

application.setAttribute(String name, Object value);

'코딩' 카테고리의 다른 글

2022.03.22_30일차_spring(5)  (0) 2022.03.24
2022.03.21_29일차_spring(4)_EL, JSTL  (0) 2022.03.22
2022.03.17_27일차_스프링(2)  (0) 2022.03.17
2022.03.16_26일차_스프링(1)  (0) 2022.03.16
25일차  (0) 2022.03.16

댓글