본문 바로가기

Server Oriented/Spring

(21)
Spring import 패키지 (Annotation) org.springframework.stereotype._____@Controller@Service   org.springframework.web.bind.annotation._____@RestController@RequestMapping,@GetMapping@PostMapping,@PutMapping@PatchMapping@DeleteMapping@PathVariable@RequestBody@ResponseBody   org.springframework.ui._____ Model   org.springframework.beans.factory.annotation._____@Autowired   org.springframework.data.jpa.repository._____Repository ← Cru..
스프링 Controller 에 딸린 메서드의 파라미터와 리턴값 1. 파라미터 컨트롤러 클래스에서 메소드에 파라미터를 사용할 때에는.. form 문에 담긴 컨트롤 값으로 넘어오는 것이면, 해당 클래스를 그대로 기술하면 되지만.. @...Mapping("/...") public foo(ClassA classA) { ... } request url 의 path 에도 파라미터가 넘어온다면, @PathVariable 사용 @...Mapping("/.../{param}") // url 의 path 부분에 변수가 들어오기 때문에 PathVariablepublic bar(@PathVariable ClassB param, ...) { ... } JSON 데이타가 (url 호출시 body에) 파라미터로 넘어온다면, @RequestBody 사용 @...Mapping("/.../{par..
@SpringBootTest 에서 HttpServletRequest 나 HttpSession 등을 mock 하는 방법 원문: https://a1010100z.tistory.com/194 org.mockito.* 에서도 기능을 제공하기는 하는데..Spring Frame Work 에도 제공하는 것이 있으니, 스프링 쪽을 사용하기로 합니다.그리고 사용하기에도 훨씬 간편.. ~.~물론, HttpServletResponse 등도 가능.
스프링 Transaction 트랜잭션 트랜잭션(@Transactional)은 Controller.java 가 아니라, ServiceImpl.java 에서 기술(inteface 인 Service.java 에서도 기술하지 않음). /build.gradle JPA 설정과 다를게 없음. /src/main/resources/application.yml JPA 설정과 다를게 없음. table1 과 table2 의 관계는 편의상 1:1 로 설정. table1 의 col11 이 primary key, Object1.java 연계. table2 의 col21 이 pk, table2 의 col11 이 table1 의 col11 대응, Object2.java 연계. 이곳에서는, table2.col11 에 foreign key 세팅이 되지 않은 상태로 본다. f..
스프링 파일 업로드 MultipartFile #2/2 "스프링 파일 업로드 MultipartFile #1/2" 에선, 로컬 파일을 서버에 업로드 할 때.. 로컬 파일 속성을 그대로 업로드하므로, 로컬에서의 작성일 등등의 정보가 그대로 업로드. "스프링 파일 업로드 MultipartFile #2/2" 에선, 서버에 업로드 할 때.. 경로와 파일명을 변경하면서 저장하므로, 로컬에서의 작성일 등등의 정보가 변경됨. 덧붙여서, 이미지 게시판 (테스트를 위한 간소화 버전) 관리 내용 추가. 여러 파일을 한 번에 업로드 하는 것은, "스프링 파일 업로드 MultipartFile #1/2" 참조. Ajax 를 이용해서 파일들을 미리 업로드 하고, 본문을 나중에 올려서 통합하는 방법도 있음. * build.gradle plugins { id 'org.springframe..
스프링 파일 업로드 MultipartFile #1/2 // 파일이 저장되는 os 상의 경로는 application.yml 에 기술 @PostMapping("/aaa") public String methodA(MultipartFile bbb) throws Exception{ // org.springframework.web.multipart.* log.info(bbb.getOriginalFilename()); // 경로명 없이 파일 이름과 파일 확장자 log.info(bbb.getSize()); // long 바이트 사이즈. 1024 로 나누면 KB 사이즈 log.info(bbb.getContentType()); // image/jpeg, image/gif, image/png, ... } - file type 외의 컨트롤들은 그대로 String 파라미터로 담을..
JUnit5 JPA DB 테이블 1개 목록/상세/등록/수정/삭제 ※ Mybatis mapper 가 설정되어 있으면 참조를 하기 때문에, 세팅된 mapper 가 불필요 하면 disable 방법을 찾아 보는 것도.. JUnit 테스트 하는데 계속 에러가 나서 결국 포기했었는데, 나중에 확인해 보니 mapper 중 하나가 문제를 일으켰던... ㅠ. @Slf4j // lombok.extern.slf4j.* @SpringBootTest // org.springframework.boot.test.context.* public class ClassATests{ @Autowired // org.springframework.beans.factory.annotation.* ClassARepository caRepository; // interface 이기 때문에 스프링에게 생성을 맡기..
스프링 JPA, 평범한 게시판 구현 DB 테이블 1개 검색 조건으로 조회하고 페이지 링크를 거는 목록, 상세, 등록, 수정, 삭제 등을 다루는 평범한 게시판 * 파일 구조 /src/main/java/도메인/controller/Board2Controller.java, request/response 교통정리만 처리 /src/main/java/도메인/domain/Board2.java, 기본 데이타 구조 (DB 연계). Board 라고 해도 됨 /src/main/java/도메인/dto/PageRequestDTO.java, 목록 검색 조건과 페이지 정보 /src/main/java/도메인/repository/Board2Repository.java, DB 관리 (JPA 핵심이자 기술할게 없기도..) /src/main/java/도메인/service/Board2Servic..