목록Java (53)
오답노트
Json String -> 객체import com.fasterxml.jackson.databind.ObjectMapper;import java.util.List;import java.util.Arrays;// 리스트로 받는 법// resultList은 List 이다ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);List harmornyRoomDtos = Arrays.asList(mapper.readValue(resultList.toString(), HarmornyRoomDto[].class)); harmornyRoomListDto.setHarmornyroomL..
소스코드import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.InjectMocks;import org.mockito.junit.jupiter.MockitoExtension;@ExtendWith(MockitoExtension.class)public class NaverSearchServiceImplTest { @InjectMocks private NaverSearchServiceImpl naverSearchService; @Test void testHarmornyroomSearch() { naverSearchService.getHarmornyR..

한글 깨짐 홈페이지 입니다 해결되지 않은 meta 태그 홈페이지 입니다 이건 왜 안되는걸까.. 해결 홈페이지 입니다

Maven 의존성 추가 ... org.apache.tomcat.embed tomcat-embed-jasper application.properties 설정 추가spring.mvc.view.prefix=/WEB-INF/views/spring.mvc.view.suffix=.jsp 경로 추가결과 확인

@Controller일반적인 API를 만드는 것 가능Model을 인자로 주게 되면 View를 호출 할 수 있음@ResponseBody를 활용하면 REST 방식으로 응답 가능@RestControllerRest API를 만드는 것에 용이하다.인터페이스를 보면 @Controller와 @ResponseBody를 사용하고있다.Model를 인자로 줘도 View를 호출 하지 못함package org.springframework.web.bind.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation..
OAuth2 다량의 사용자를 보유하고 있는 벤더에게서 사용자 정보를 위임을 받아 사용자를 가입하게 하는 방식이다. 개발 환경 구축 dependencies { implementation("$boot:spring-boot-starter-oauth2-client") } build.gradle에 위와 같은 의존성을 추가한다. spring: security: oauth2: client: registration: google: client-id: 532557492921-oanhrsrege0kqvb7q1v0v2o4lcu0ktlc.apps.googleusercontent.com client-secret: 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 application.yml 에 위와 같이 설정한다..
세션 관리 서버는 모든 요청에 아이디/패스워드를 요구 할 수 없다. 그래서 한 번 로그인 하면 토큰을 발급하고, 세션에는 토큰을 저장해 세션이 유지되는 동안, 혹은 remember-me 토큰이 있다면 해당 토큰이 살아있는 동안 해당 토큰만으로 사용자를 인증하고 요청을 처리한다. SessionManagementFilter SessionRegistry를 Bean으로 등록하여 SessionInformation(세션 사용자)를 모니터링 할 수 있다. 만료된 세션에 대한 요청은 세션 즉시 종료하고, 만료 판단은 SessionManagementFilter 의 ConcurrentSessionControlAuthenticationStrategy 에서 처리한다. @Bean SessionRegistry sessionReg..
영속성 전이 (Cascade) 영속성 전이는 포함하고 있는 속성에 대해 현재 속성이 받는 영향을 전달하는 것이다. 예를 들어 Book 과 Publisher 가 1:N 관계를 가지고 있고, Book을 제거 하면 Publisher도 같이 제거 해야하는데, 그렇게 하려면 쿼리를 두 번 날려야한다.(각각 삭제에 대한 쿼리) 하지만 영속성 전이를 통해 Book이 삭제 될 때, Publisher와 연결되는 Book이 삭제된다면 해당 Publisher도 삭제한다. @Entity @NoArgsConstructor @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) @DynamicUpdate public class Book extends Base..
1:1 관계 Book 과 BookReviewInfo 의 1:1 관계를 나타내는 예시이다. 연결할 두 Entity에 상대방 멤버 변수를 만들고 OneToOne Annotation을 달아주면 연결된다. OneToOne Annotation에 mappedBy를 설정하게 되면 ToString이 순환 참조로 인해 에러가 발생한다. 둘 다 사용하고 싶다면 한쪽에는 @ToString.Exclude를 사용하자. OneToOne @Entity @NoArgsConstructor @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class Book extends BaseEntity { @Id @GeneratedValue(strategy ..
Query Method JPA에서 쿼리문을 직접 작성하지 않고 Method명으로 지정만 하면 자동으로 쿼리를 만들고 요청까지 해주는 편리한 기능이 있다. https://www.javaguides.net/2018/11/spring-data-jpa-query-creation-from-method-names.html Spring Data JPA - Query Creation from Method Names In this article, we will learn how we can create query methods by using the query generation from the method name strategy. Spring Data JPA offers various ways to create a ..