2021-01-08 sp4
월요일 AOP 방법론
@CookieValue
쿠키에 넣을 녀석??
@CookieValue("boardCookie") String value
CookieUtils utils = new CookieUtils(req);
String value = utils.getCookieValue("boardCookie");
@RequestMapping 설정을 안해주면
설정 안해준 녀석으로 핸들러를 찾지 모든 녀석이 들어 온다.
기본 핸들러를 찾지 못하기 때문에
project - spring - show RequestMappings
Errors errors
BindingResult errors 둘이 같은 데이터를 가지고 있다.( Errors를 상속 받고 있다)
<form:form commandName="board"
<form:form ModelAttribute="board"
같은 녀석이다.
변경할 녀석
board 게시판 페이징 처리가 안되는듯?
BoardDeleteController
LoginProcessSerlvet
template.jsp
추천도 바꿔야함
거래처 게시판도
어제 못한 prod??인지 member인지
REST
https://toma0912.tistory.com/86
RestController
@Controller + @ResponseBody, 버전을 탄다 4.0 부터 지원
REST - Representational State Transfer
참고 : https://ko.wikipedia.org/wiki/REST
-
로이 필딩(Roy Fielding) 2000년 박사학위 논문에서 소개
-
필딩 HTTP의 주요 저자 중 한 사람
-
네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소(URL)를 지정하는 방법 즉, Line 에 대해서 잘 써먹자
-
필딩의 REST 원리를 따르는 시스템은 종종 RESTful이란 용어로 지칭된다.
REST 의 목적
http의 기존 구조를 잘 써먹자
자원이 누구인지를 식별?
자원에 대한 식별만을 넣고 행위를 표현하지 말자
굳이 URL 정보에 행위를 넣지 않아도 Method로 표현할 수 있지 않느냐? - 원래 목적그대로 사용하자둘다 조회인데
GET 목록 /board
GET 상세 /board + /133
POST 등록 /board
PUT 수정 /board + /133
DELETE 삭제 /board + /133
게시글 자원의 식별만 있고 명령은 존재하지 않는다.
원래 프로토콜의 구성요소들을 원래 목적을 그래로 활용하자
RESTful
자원을 요청했으면 그 자원만을 달라
다른 부가적인것을 받지 않는다.
restful 설계 방식
참고:
https://one-it.tistory.com/entry/RESTful-API-%EC%84%A4%EA%B3%84-%EA%B7%9C%EC%B9%99
경로변수
- 경로의 일부분으로 들어오는 변수, {변수명}
http://localhost/webStudy04_SpringMVC/board/143
어떤걸 하겠다라는 행위가 전혀 없다.
브라우저에서는 RESTful 스러운 메서드를 지원하지 않는다.
전체를 바꾸려면 한두군데 아니다. 지금 모듈은 그대로 놔두는데 이것만 바꿔보자 라는 것
추가로 덧글쪽에다가만 적용해보자
이러면 심각 그동안에는 주소로 식별 했는데
브라우저가 지원하지 않는 put을 이용하기 위해선 이렇게 사용한다.
CoC에 따라 쓰는 히든 파라미터??
근데 이 _method 를 받는 녀석들은 누가 처리할 것이냐라는 것이다.
이 처리는 하는건 모든 핸들러에서 중복이된다.
그래서 필터나 인터셉터가 필요한데
그래서 Spring에서는 필터를 제공한다.
방명록 + 테스트관련 에러? (스프링과 JUnit 연동)
Spring + mybatis 연동
mapping namespace 맞춘이유
어떤 인터페이스의 proxy를 만들지 정하기 위해서 정했었다. 핵심이 되는 부분
유사 패턴이 반복된다. - 프레임워크에서는 미리 만들어 뒀다 우리가 직접 DAO 객체를 만들필요도 없어진다.
연동 모듈 2가지 필요
transaction 안에 트랜잭션 매니저가 존재하는데 이러면 우리가 관리할 필요가 없다.
도움을 받아야하는 것을 가져온다.
mybatis-spring
이것을 쓰려면
제거
제거
<properties resource="kr/or/ddit/db/dbInfo.properties" />
제거
<!-- environments 인 이유 계정 정보를 여러개 둘수 있다. -->
<environments default="dev">
<environment id="dev">
<!-- transactionManager 트랜잭션 매니저를 달라, 이게 트랜잭션 관련 커밋, 롤백 권한? -->
<transactionManager type="JDBC" />
<dataSource type="POOLED" >
<!-- ${} 구멍에서 찾는다? 라고 해서 플레이스 홀더래 -->
<property name="driver" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
다 중복되니 구현체가 각각 필요 없어짐??
private SqlSessionTemplate template;
@Inject
public void setTemplate(SqlSessionTemplate template) {
this.template = template;
mapper = template.getMapper(IMemberDao.class);
}
IMemberDao mapper;
aspectjweaver
미리 공부할 것 : 프로그래밍 언어의 변천사(절차지향TOP-> 함수지향FOP->객체지향OOP)
ProdserviceImpl에서 createProd, modifyProd에
@Transactional붙이기
src/test/java에 있는 MemberDAOImplTest에서
private IMemberDAO dao;
컨테이너 안 매퍼 프록시를 생성해서 주입받아 써야함
web.xml이 동작해야 함-> 서버가 구동되어야 함-> 이건 Test가 아닌데?
-> 서버 구동하지 않고도 테스트할 수 있는 방법? 스프링이 가진 테스트 모듈 쓰기
커밋전 꼭 해야하는게 단위 테스트이다.
@RunWith(SpringJUnit4ClassRunner.class)
메타 어노테이션이 아니라 일일히 달아줘야한다.
AOP 인터페이스 기반의 프록시 기능인데
타입 기반으로 해버리면 만들수가 없다?
미션 2 JDBC 인터페이스를 기반으로해서 프록시를 생성하는 기술을 알아보고와라
서버사이드 테스트
가짜 객체를 만들어서 테스트할수 있다 진짜 DB로 롤백하는 그게 아니라
Preferences - favorites
미션3 방명록 완성
미션4 알바생 스프링으로 바꿔보기??
스프링 처음 만드는것 부터 따라서 해보기 - 복습차원임.
Author And Source
이 문제에 관하여(2021-01-08 sp4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hkjs96/2021-01-08-sp4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)