본문 바로가기
반응형

Development/Java72

리다이렉션 응답 301(Permanently Moved) 요청한 URL에 대한 HTTP 요청의 처리 책임이 영구적으로 Location 헤더에 반환된 URL 로 이전되었다는 응답. 영구적으로 이전되었으므로 브라우저는 이 응답을 캐시한다. 추후 같은 URL 로 요청시 브라우저는 캐시된 원래 URL 로 요청을 보낸다. 302 (Found) 요청한 URL 이 "일시적으로" Location 헤더가 지정하는 URL 에 의해 처리되어야 한다는 응답. 클라이언트 요청은 항상 단축 URL 서버에 먼저 보내진 후 원래 URL 로 리다이렉션이 된다. 2022. 6. 16.
@ElementCollection 컬랙션 객체임을 JPA 에 알려주는 Annotation. @Entity public class Person { @Id private Long id; private String email; @ElementCollection @CollectionTable( name = "address", joinColumns = @JoinColumn(name = "person_id") ) List addressInfoList = new ArrayList(); } Entity 와 라이프 싸이클을 같이 하며 독립적으로 사용 불가능 하다. 부모 Entity가 삭제될 경우 같이 삭제된다. (실제 클래스에 cascade 를 설정하는 옵션이 없다.) ElementCollection의 Fetch 전략은 기본이 Lazy 이다. 실제 테이.. 2022. 6. 13.
@Access 어노테이션 JPA 가 엔티티 데이터에 접근하는 방식을 지정한다. 1. AccessType.FIELD : 필드에 직접 접근한다. @Access(AccessType.FIELD) private String address1; 2. AccessType.PROPERTY : 프로퍼트로 접근한다. @Access(AccessType.PROPERTY) public String getAddress2() { return address1 + address2; } 3. AccessType 이 지정되지 않은 경우는 @Id 위치에 따라 지정된다. @Entity public class OrderInfo { @Id private Long id; private String address1; @Transient private String addres.. 2022. 6. 3.
[Spring] Spring Cloud Config Server Error - Add a spring.config.import.... Add a spring.config.import=configserver: property to your configuration. If configuration is not required add spring.config.import=optional:configserver: instead. To disable this check, set spring.cloud.config.enabled=false or spring.cloud.config.import-check.enabled=false. Spring Cloud Config Server 랑 Client 구성하다가 위와 같은 에러를 보게 되었다... 분명 라이브러리랑 맞게 들어간것 같은데. gradle 에 설정된 dependency는 다음과 같이 정의 했다... 2021. 12. 28.
[Spring] SpringBoot log4j 라이브러리 바꾸다 삽질한일. log4j 취약점 사태에 따라서 프로젝트에 log4j 라이브러리를 변경해야 했다. 실제 프로젝트에서는 logback 을 사용중이었고 boot 버전은 2.2.4를 사용하고 있었고 spring-boot-starter-logging 을 사용중이었다. 이 라이브러리의 dependency 는 아래와 같다. ch.qos.logback » logback-classic 1.2.3 org.apache.logging.log4j » log4j-to-slf4j 2.12.1 org.slf4j » jul-to-slf4j 1.7.30 출처 : https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-logging/2.2.4.RELEASE 1. s.. 2021. 12. 14.
Spring Boot Test Case 작성에 대한 생각 - Controller Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Service Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Repository Test Repository, Service 에 대한 테스트를 살펴봤으니 이제 Controller 테스트를 확인해보자. Controller Test 에는 @WebMvcTest 를 사용했다. Controller 는 확인해야 할 부분이 다음과 같다. 1. request 를 요청한 url 과 파라메터가 정확한지 여부. 2. 정상 처리 되었을데 요구한 응답을 보내주는지. 3. 비정상일때에 response 에 상태 코드가 정확히 전.. 2021. 2. 18.
Spring Boot Test Case 작성에 대한 생각 - Service Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Repository Test 지난 글에 이어 이번에는 Service 테스트에 대해서 적어보려 한다. 아래는 내가 작성한 UserService 에 대한 테스트케이스 이다. @RunWith(MockitoJUnitRunner.class) public class UserServiceTest { private UserService userService; @Mock private UserRepository userRepository; private Users user1; @Before public void setup(){ userService = new UserService(userReposit.. 2021. 2. 17.
Spring Boot Test Case 작성에 대한 생각 - Repository Test 테스트 케이스를 작성을 할때 내가 어렵게 생각했던것은 2가지 이다. 1. Mock 으로 테스트케이스를 작성할 것인가? 아니면 실제 데이터를 가지고 작성할 것인다. 2. 테스트용 DB를 따로 둬야 할까? 이 2가지가 항상 풀리지 않는 난제 같았다. 그런데 갑자기 뭔가 기준을 정해서 하면 되지 않을까 라는 생각이 들었다. 어떻게 보면 당연한 이야기 이긴 하지만. 테스트케이스를 작성하려는 클래스들의 역할에 생각해 보고 그에 맞는 테스트 케이스를 작성하면 되는 것이다. Spring Boot 프로젝트를 보면 테스트케이스를 작성하는 클래스들로 다음과 같은 것들을 꼽을 수 있다. 1. Repository 2. Service 3. Controller 4. RestApiController 그럼 우선 이번 글에서는 Rep.. 2021. 2. 17.
Spring Boot Data Jpa 를 사용한 Paging. Spring Data Jpa 를 사용하게 되면서 전에 쓰지 않았던 paging 기능에 대해서 이야기 해보려 한다. Domain 을 조회하는 Repository interface를 만들때에 JpaRepository 를 상속해서 사용하는 경우가 많다. 이 JpaRepository 를 살펴보면 내부에 이렇게 구현이 되어있다. public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor { ..... } 그리고 다시 PagingAndSortingRepository 를 살펴보면 다음과 같다. public interface PagingAndSortingRepository extends CrudRepository { .. 2019. 11. 11.
[SpringBoot] @RequestBody 에 들어가는 Object 는 No-Argument Constructor 가 존재해야 한다. 아래와 같이 @RestController 에 메소드가 있다고 생각해보자. @PostMapping public ResponseEntity getResDto(@RequestBody AccountReqDto dto){ return ResponseEntity.ok(AccountResDto.builder().email("test@test.com") .loginId("test") .username("tester") .build() ); } Post 요청에 대해서 AccountReqDto 라는 Object 형태의 파라메터를 받아서 Response 를 리턴하는 메소드 이다. AccountReqDto 는 다음과 같이 되어있다. @Getter public class AccountReqDto { private String .. 2019. 10. 21.
[Spring Boot] There is no PasswordEncoder mapped for the id "null" 내 github 에 있는 프로젝트들중 예전에 만들었던 건데 내용좀 다시 볼겸 수정을 하고 있었다. 사실, 간단한거 빼고는 잘 작동을 안하는것 같다. 그래서 이번에 라이브러리 버전 업데이트 좀 할겸 소스를 수정을 했다. Spring Boot 버전도 최신 버전으로 수정을 하고 Security 버전도 수정을 했다. 그리고 나서 간단히 로그인을 해보려고 하니 다음과 같은 에러가 발생했다. There is no PasswordEncoder mapped for the id "null" 음.. ? 찾아보니 Spring Security 버전이 올라가면서 PasswordEncoder가 변경되면서 발생한 에러였다. The general format for a password is: {id}encodedPassword Su.. 2019. 9. 9.
Spring Boot Controller Test 하다가 마주친 IllegalArgumentException 컨트롤러를 만들어서 Testcase 를 작성한 후에 성공할거라 믿고 돌려봤는데 IllegalArgumentException 이 발생했다.컨트롤러 코드와 테스트 케이스 코드는 각각 다음과 같다. UserController.java123456@GetMapping(value = "/users/{email}")public UserDto.Res getUser(@PathVariable @Valid final String email){ Optional users = userService.findByEmailValue(email); return new UserDto.Res(users.get());}Colored by Color Scriptercs UserControllerTest.java12345678910111213.. 2019. 3. 7.
728x90
반응형