springboot

Spring/기타

[Spring] JdbcTemplate 스프링 빈은 어떻게 자동으로 등록될까?(feat.DataSource)

❓ 해당 주제를 찾아본 이유 JdbcTemplate을 쓸 때 여러 구글링을 통해 사용 방법을 알아보게 되었다. 대부분의 사람들이 JdbcTemplate 을 주입받아서 사용하는 것이 아니라, DataSource 를 주입받아서 JdbcTemplate 객체를 생성해서 사용했다. private final JdbcTemplate jdbcTemplate; @Autowired public RaceResultDao(final DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } 처음 든 생각은 '왜?' 였다. JdbcTemplate 이 스프링 실행 시에 스프링 빈으로 자동으로 등록되어 있다면 DataSource 를 의존성 주입하는 것이..

Spring/기타

[Spring] MockMvc @RequestPart MultipartFile 파일 테스트 시 에러 트러블 슈팅

1. First Try - 403 에러 처음에는 파일 테스트를 할 때 이전에 MockMvc로 테스트할 때처럼 "/user/update"의 Http Method가 patch이므로 MockMvcRequestBuilders.patch()를 사용했었다. 하지만 @RequestPart의 MultipartFile를 테스트할 때는 MockMvcRequestBuilders.patch()가 아니라 MockMvcRequestBuilders.multipart()로 따로 multipart builder가 존재한다는 것을 구글링으로 깨닫고 해당 메소드를 사용하였다. mockMvc.perform( multipart("/user/update") .file(generateMultipartFileImage()) .file(genera..

Spring/기타

[Spring] SpringBoot 테스트 시 @WebMvcTest와 @SpringBootTest의 차이

Junit 테스트 시에 @WebMvcTest와 @SpringBootTest를 대표적으로 사용하는데, 두 가지 Test 어노테이션의 차이가 존재한다고 한다. SpringBoot 테스트 시에 두 가지 어노테이션의 차이를 살펴보자. 먼저 Mock과 MockMvc에 대해서 알아보자. ※ Mock이란? 실제 객체를 만들어서 테스트하기가 어려운 경우에, 가짜 객체를 만들어서 테스트하는 기술이다. ※ MockMvc란? MVC에 관련된 Mock 가짜 객체를 말한다. 웹 어플리케이션을 애플리케이션 서버에 배포하지 않고, 테스트용 MVC 환경을 만들어서 요청 및 전송, 응답 기능을 제공해주는 객체이다. 대부분의 어플리케이션 기능을 테스트하기 위해서는 MockMvc 객체를 만들어서 테스트하게 되는데, MockMvc를 @Au..

UMC - 2nd Server/UMC - 2nd Server 스터디

UMC 2nd Server - 추가 스터디 : 다양한 의존관계 주입 방법

스프링의 의존관계 주입 방법 - 3가지 필드 주입 setter 주입 생성자 주입 1. 필드 주입 @Controller public class ExampleController { @Autowired private ExampleService exampleService; } 👉 이렇게 필드 주입을 하게되면 스프링 실행 시 스프링 빈이 주입 되는데, 그 빈을 개발자가 바꿀 수 없다. 👉 테스트 코드 작성 시에 문제가 된다. 테스트 시에는 스프링 컨테이너의 도움 없이 ExampleService가 가지고 있는 여러 Repository를 자유롭게 변경하며 테스트가 가능해야 하는데, 필드 주입을 하면 스프링 실행 시 주입된 스프링 빈밖에 사용하지 못하므로 테스트 단에서 Repository 등을 스프링 컨테이너 없이 변..

UMC - 2nd Server/UMC - 2nd Server 스터디

UMC 2nd Server - 추가 스터디 : JdbcTemplate 메소드

update() 메소드 JdbcTemplate에서 삽입, 수정, 삭제는 update() 메소드를 사용한다. 이때, update() 메소드는 쿼리 실행 결과 변경된 행의 개수를 리턴한다! update(쿼리문, 치환자에 대한 파라미터) ※ 치환자 - ‘?’ : ex) "update users set name=? where password=?" 1. 삽입 (INSERT) public int createUser(PostUserReq postUserReq){ String createUserQuery = "insert into User (name, nickName, phone, email, password) VALUES (?,?,?,?,?)"; Object[] createUserParams = new Object[..

UMC - 2nd Server/UMC - 2nd Server 스터디

UMC 2nd Server - 추가 스터디 : @RequestBody / @ResponseBody

클라이언트와 서버의 비동기 통신 클라이언트 → 서버로 통신하는 메세지 : 요청(Request) 메세지 서버 → 클라이언트로 통신하는 메세지 : 응답(Response) 메세지 웹에서 새로고침없이 이루어지는 동작들은 대부분 비동기 통신으로 이루어진다. 비동기 통신을 하기 위해서는 클라이언트 → 서버로 요청 메세지를 보낼 때, Body에 데이터를 담아서 보내야하고, 서버 → 클라이언트로 응답을 보낼때도 Body에 데이터를 담아서 보내야한다. 이때, 데이터들을 다 JSON으로 주고 받는다. 웹페이지에서 JSON으로 Request한 파라미터들을 JAVA에서 받으려면 JAVA 객체로의 변환이 필요하고, 마찬가자로 Response 시에도 JAVA 객체에서 JSON으로 변환이 필요하다. 이러한 JSON ↔ JAVA 객..

UMC - 2nd Server/UMC - 2nd Server 스터디

UMC 2nd Server - 추가 스터디 : @RequestMapping

@RequestMapping : 컨트롤러의 모든 API의 URI 앞에 기본적으로 들어가는 애노테이션 특정 URI로 요청을 보내면 Controller에서 어떤 방식으로 처리할지 정의하는데, 이때 들어온 요청을 특정 메소드와 맵핑하기 위해 사용하는 것이 @RequestMapping UMC springboot template 예제에서는 @RequestMapping 아래에 @GetMapping을 써서 부모-자식 간의 조합으로 사용했다. @RestController @RequestMapping("/users") public class UserController { @ResponseBody @GetMapping("/{userIdx}") // (GET) 127.0.0.1:9000/users/:userIdx publi..

UMC - 2nd Server/UMC - 2nd Server 강의 정리

UMC 2nd Server - 7th Study : Spring 프레임워크 사용하기

스프링부트는 Route와 Controller가 합쳐져있다. 폴더 구조 src : 메인 로직 src 에는 도메인 별로 패키지 구성하도록 했다. 도메인이란 회원(User), 게시글(Post), 댓글(Comment), 주문(Order) 등 소프트웨어에 대한 요구사항 혹은 문제 영역이라고 생각하기. 설계할 APP을 분석하고 필요한 도메인을 도출하여 src 폴더 구성 config / util : 메인 로직은 아니지만 src 에서 필요한 부차적인 파일들을 모아놓은 폴더 Validation 값, 형식, 길이 등의 형식적 Validation - Controller 담당 DB를 거쳐 DB에서 검증해야 하는 의미적 Validation - Provider/Service 담당 전체 폴더 구조 설명 api-server-spri..

BE_성하
'springboot' 태그의 글 목록