no image
spring lombok SuperBuilder
SuperBuilder 생성 코드 @SuperBuilder @ToString public class BuilderTestDto { private String one; private String two; } ====================== @SuperBuilder @ToString(callSuper = true) public class BuilderTestDto2 extends BuilderTestDto{ private String three; } 부모와 자식 둘 다 붙여야하고 사용했을 때 컴파일 된 코드는 아래와 같다. public class BuilderTestDto2 extends BuilderTestDto { private String three; protected BuilderTestDt..
2023.10.08
no image
spring mongodb repository
mongodb connecting // application.properties spring.data.mongodb.host= ~~ spring.data.mongodb.port=27017 spring.data.mongodb.database=test spring.data.mongodb.username=root spring.data.mongodb.password=1234 spring.data.mongodb.authentication-database=admin authentication admin 설정 없을 시, authentication 관련 예외가 발생했다. Collection 정의 @Document(collection = "testCollection") @Getter @Setter @ToString pu..
2023.10.01
no image
JDBC, JPA, Hibernate, Spring Data JPA
JDBC (Java Database Connectivity) : DB에 접근할 수 있도록 자바에서 제공하는 API (인터페이스) JPA ( Java Persistence API ) : 자바 ORM 기술에 대한 표준 명세이다. (인터페이스) Hibernate : JPA의 구현체 중 하나 Spring Data JPA : JPA의 구현체를 한 층 더 추상화하여 비즈니스 로직에 더욱 집중한다. 다만 DB의 독립적 개발은 어려워진다. Repository 인터페이스를 사용 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'mysql:mysql-connector-java:8.0.28' spring-data-jpa..
2023.09.28
no image
lombok @Builder
클래스 레벨 @Builder @Builder public class Test { private String one; private Long two; public Test(Long two){ this.two = two; } } lombok builder는 기본적으로 allArgsConstructor 로 동작한다. 그래서 위 코드에서 @Builder는 one, two를 인자로 받는 생성자를 사용하지만 정의되지 않은 생성자이므로 컴파일 에러가 발생한다. 정의된 건 two를 받는 생성자 뿐이다. public Test build() { return new Test(this.one, this.two); } ( 위 처럼 코드를 만들고 정의되지 않은 생성자로 에러가 발생할 것이다. ) 생성자 레벨 @Builder pu..
2023.08.06
Json 직렬/역직렬, @RequestBody, @ModelAttribute
Json 변환에서 직렬화 - json으로 변환 역직렬화 - 자바 객체로 변환 +) response dto말고 entity로 return할 때, entity에 @getter 없으면 직렬화 안된다. @RequestBody @Setter나 생성자가 없어도 동작한다.( 기본 생성자는 필요함 ) 데이터 바인딩을 위한 필드명을 알아내기 위해 getter나 setter 중 1가지는 정의되어 있어야 한다. 어노테이션을 생략할 순 없다. @ModelAttribute @Setter나 생성자가 있어야 동작한다. Query String 또는 Form형식이 아닌 데이터는 처리할 수 없다. ( application/json은 안됨 ) 어노테이션을 생략할 수 있다. 참고 자료 https://tecoble.techcourse.co...
2023.08.04
no image
spring data JPA - slice, page (무한 스크롤, 페이지네이션)
페이지를 구현한다면 두 가지 경우를 생각해볼 수 있다. 스크롤이 끝에 다다르면 추가 요청으로 정보를 불러오는 무한 스크롤과 페이지 전환으로 다음 정보를 보여주는 페이지네이션이다. 둘 다 sql의 limit, offset을 잘 활용하면 구현할 수 있어보인다. 하지만 spring data jpa에서 편리한 인터페이스를 제공한다. query method에 Pageable을 인자로 주면 return으로 Slice, Page, List 등의 타입을 받을 수 있다.public interface S3ImageRepository extends JpaRepository { Slice findSliceBy(Pageable pageable); Page findPageBy(Pageable pageable);} Pa..
2023.07.27
no image
Spring Security 예외처리( AuthenticationEntryPoint, AccessDeniedHandler, unsuccessfulAuthentication )
관련 포스트 2023.07.13 - [Spring/Security] - 스프링) Spring Security Authentication/Authorization (23-06-29) 스프링) Spring Security Authentication/Authorization (23-06-29) velog에서 이전한 글 입니다. Filter Spring의 life cycle이다. Security Spring Security도 많은 filter로 구성 돼있다. Security의 목적은 controller에서 인증/인가를 분리하고 filter단에서 손쉽게 처리하기 위함이다. cornpip.tistory.com Spring Security 예외처리 현재 구성한 인증/인가 흐름이다. 프론트에서 error msg를 요청..
2023.07.26
no image
Spring boot DI 주입 방식 (필드/수정자/생성자)
3가지 주입 방식이 있다. 필드 주입 @Service public class TestService2 { @Autowired private TestService3 testService3; ... } 필드 주입을 하면 순환 참조를 잡아내지 못한다는 글이 있다. 확인해보자. @Service public class TestService2 { @Autowired private TestService3 testService3; ... } @Service public class TestService3 { @Autowired private TestService2 testService2; ... } 위와 같은 코드로 run을 하면 다음과 같이 빌드에서 에러를 발견할 수 있다. 예전 버전의 spring boot에선 잡아내지..
2023.07.22
no image
Spring Security Cors 에러( WebMvcConfigurer/ corsConfigurationSource )
해당 포스팅을 이해하기 위한 정보 2023.07.20 - [Web] - CORS CORS CORS (Cross-Origin-Resource Sharing) domain name = root name + TLD https://blog.cornpip.store 과 같이 포토를 명시하지 않을 경우 https는 https://blog.cornpip.store:443 과 동일하게 동작하고 http://blog.cornpip.store 은 http://blog.co cornpip.tistory.com 문제의 시작 No content to map due to end-of-input @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigu..
2023.07.20