jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

Spring

[Spring] Day03 (Note): 테스트, 스프링 빈, 파라미터 전달, Model

2022. 3. 22. 00:11

2022/3/18

 

테스트

*TDD Test Driven Development: 테스트 주도 개발
만들고자 하는 기능의 내용을 담고 있는 테스트 코드를 먼저 만들고, 그 테스트가 성공하도록 하는 코드를 작성하는 방법. 테스트 성공 코드를 개발 코드로 쓴다. 테스트를 실패한 코드는 만들지 않겠다는 의미.
스프링이 제공하는 중요한 가치는 객체 지향, 테스트. 테스트를 쉽게 할 수 있는 환경을 제공. 객체 지향 IOC, DI. 객체를 생성하고 관계를 맺어주고 관리는 스프링이 대신해주는 장점이 있다. 서비스가 훨씬 더 메모리 적으로 효율적으로 돌아가고 개발적으로 편리해짐. 테스트: 변화에 유연하게 대처할 수 있는 여유를 준다. 테스트를 하면 서버 없이도 돌려볼 수 있다. 브라우저 요청도 가능. 큰 강점.

 

*단위 테스트 Unit Test: 작은 단위의 테스트, 개발자 테스트
하나의 관심에 집중해서 효율적으로 테스트할 말한 범위를 단위라고 본다. 작을수록 좋다.

*Junit: 자바 테스트 프레임 워크

테스트 클래스 작성 시 요구 조건
1.
테스트 적용 메서드는 public으로 선언
2.
리턴 타입은 void, 파라미터 없는 메서드
3. @Test
어노테이션 붙여야 함.

 

스프링 빈
:
스프링이 객체 생성하고, 필요한 곳에 주입하고 관리하는 객체들을 말함.
* -context.xml
에 <bean> 이용하여 스프링 빈으로 등록
* -context.xml
에 <context:component-scan>으로 스캔해서 자동 등록. 빈으로 등록하고 싶은 클래스 위에 @Component, @Service, @Repository 등이 붙어있어야 한다.

빈 등록하는 방법:

*롬복이나 컴포넌트 스캔, @Autowired 등 어노테이션을 사용하지 않고 변수만 만들어줬을 경우

1.   홑 태그 겹 태그 다 가능
<bean id= “
빈 이름” class= “패키지 명을 포함한 클래스 전체 경로” />
<bean id= “
빈 이름” class= “패키지 명을 포함한 클래스 전체 경로” >
           (
객체를 생성하는 동시에 추가해서 세팅될 정보들)
           <constructor – arg /> or <constructor – arg ></constructor – arg >
           <property /> or <property></property > etc…
</bean>

 

2.   <property>: 해당 변수의 set메서드 호출하여 지정한 값을 채우며 객체 생성할 때 사용. 겟 메서드를 생성함.
속성:
-name:
해당 클래스 내의 데이터를 채울 변수 이름과 동일하게 작성 -> name 속성 값으로 채워진 변수의 set 메서드 호출
ex) name = “num” -> setNum()
메서드 호출
-value:
해당 변수에 채워줄 값 지정. 기본형 숫자, 문자, 채워줄 때 사용
-ref:
해당 변수에 채워줄 값 지정. 객체를 채워준다. 참조형(어딘가에 bean으로 등록이 되어있어야 함).

3.   <constructor – arg>: 생성자의 매개변수 채울 때 사용하는 태그
속성:
-value:
매개변수에 들어갈 기본형 (숫자, 문자) 값 지정
-ref:
매개변수에 들어갈 참조형 값 지정
 
생성자 매개변수가 아닌 객체일 때… 프로퍼티와 혼합하여 사용할 수 있음. 타입만 같으면 된다.


-index:
생성자로 보내는 매개변수의 순서 지정. 0부터 시작하는 숫자로 매개변수 순서 지정
-type:
값의 타입을 지정
-name:
생성자의 매개변수 이름을 name 속성으로 지정해 매핑.

 

 

파라미터 받기
요청이 들어오는 메서드에 매개변수로 지정하면 스프링이 자동으로 바인딩해준다. 요청할 때 넘어온 파라미터를 명시적으로 매개변수 앞에 붙여서 해당 파라미터는 이 매개변수에 담아야 된다고 알려주는 것. 어노테이션을 붙이면 매개변수 이름은 파라미터 이름과 달라도 괜찮다.

 

1.   일반 매개변수 나열( 원하는 타입의)
@RequestParam
붙여도 되고 생략해도 됨

 

2.   DTO 같은 객체 안에다 수집 (getter가 존재해야 함)

 

3.   ArrayList 타입의 파라미터로 받기
@RequestParam(“
파라미터명”) 붙여야 됨

 

4.   배열로 받기
@RequestParam
생략 가능

 

Model 전달자
Controller
의 메서드를 작성할 때는 특별하게 Model이라는 타입을 파라미터로 지정할 수 있다. Model 객체는 컨트롤러에서 생성된 데이터를 담아 컨트롤러에서 JSP에 전달하는 역할을 하는 존재이다. (어딘가에서 생성된 데이터를 뷰로 전달할 때 사용하는 객체가 모델이다…) 이를 이용해서 JSP와 같은 view로 전달해야 하는 데이터를 담아 보낼 수 있다.
메서드의 파라미터에 Model 타입이 지정된 경우에는 스프링은 특별하게 Model 타입의 객체를 만들어서 메서드에 주입하게 된다.

*
자바 쪽에서 view 쪽으로 데이터를 전달하는 방식
(한 번의
요청에 해당하는 데이터 전달할 때)
1. request.setArrtibute(“
키 값”, 값);
request.setArrtibute(String name, Object value);
request.setArrtibute(“name”, 피카츄);
추가하기.
request.getAttribute(String name_;
추가한 거 꺼내기
화면에 전달해주려면 이름이 있어서 하잖아요 그래서 키 밸류 타입으로 이 데이터를  리퀘스트 객체에 추가해주는 거예요.

2. model.addAttribute(String name, Object value) ->
스프링에선 이걸 더 많이 쓰긴 함.

*
자바에서 데이터 추가해주는 방법
유효기간은 사용자가 브라우저를 닫기 전까지 살아있음. 로그인 처리와 같이 계속 들고 있어야 하는 데이터가 아니면 사용 x

session. setArrtibute(String name, Object value); 추가
session. getArrtibute(String name); 추가한 거
꺼내기
application.setAttribute(String name, Object value);
프로젝트 전체에 저장( 잘 사용 x 위험)

    'Spring' 카테고리의 다른 글
    • [Spring] Day04 (Note): EL, JSTL, Model
    • [Spring] Day03 (Code)
    • [Spring] Day02 (Code)
    • [Spring] Day02 (Note): pom.xml 세팅, 컨트롤러, 메서드 리턴 타입, 의존성 주입

    티스토리툴바