목록Spring (6)
기록하는 공간

스프링 시큐리티의 어노테이션인 @EnableWebSecurity 어노테이션은 기본적으로 CSRF 공격을 방지하는 기능을 지원한다.그래서 우리는 항상 SecurityConfig 클래스에 csrf를 비활성화한다.@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { return http .csrf(AbstractHttpConfigurer::disable) // csrf 비활성화 ...~ ...~ ...~ .build(); }이때 CSRF가 무엇인지 살펴보자. C..

처음 프로젝트를 진행했을 때, Https를 적용하기 위해, AWS의 로드밸런서를 사용했었다. 하지만 로드밸런서를 사용하게 되면서 대학생인 나에게 부담되는 금액이 부과되었었다.그래서 NGINX를 사용하여 Https를 적용해 주기로 했다. 아래부터 설명하는 부분은 AWS, GCP 등 클라우드 서비스로 이미 서버를 열어 둔 상태라고 가정한다. 현재 나는 GCP 를 사용하여 우분투 서버를 열었다. NGINX, certbot설치와 SSL인증서 발급먼저 우분투 서버에서 NGINX설치를 하기 전에 업데이트 해준다.$ sudo apt update nginx install$ sudo apt install nginx certbot install$ sudo apt install certbot python3-certbot-n..

빌더 패턴…바로 예시부터 보면서 확인한다.예시) 실제 사용 중인 코드Board를 생성한다.@Entity@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "board_id") @Schema(description = "아카이빙 Id", example = "1") private Long boardId; @Schema(description = "아카이빙 제목", example = "강아지와 산책한 날") private String boardTitle; @S..

코드를 짜면서 controller 들을 훑어보았는데, 대부분 @RequestParam을 사용하였다. … 문득 생각이 들었다. @RequestParam은 무엇일까? 왜 이걸 사용하는거지? 내가 이걸 잘 알고 사용하는 건가? 대충은 알고 있다. URL뒤에 ?를 붙이고 key=value 형태로 전달된다는 것을. 근데 또 @PathVariable 이란 어노테이션도 사용가능하지 않나? 어디서 본 적이 있었는데? 둘이 뭐가 다른거지? 그래서 알아보기로 했다. @PathVariable와 @RequestParam 어노테이션은 무엇인가. 💡 클라이언트가 호출한 URL의 파라미터를 받아서 처리하는 어노테이션이다. @PathVariable 이란? 경로 매개변수라고 하고, URL에 직접 포함이 된다. 주로 리소스의 식별자를 ..

JPA에서 다대다 연관관계를 제공한다. @ManyToMany 어노테이션을 사용하는 것이다. 이 글에서는 다대다의 문제점들과 해결책을 설명하고자 한다. 실제로 최근 프로젝트를 진행하면서 사용했던 예시이다 이 코드를 간단히 설명하자면 유저가 스크랩한 공지를 가지고 있기 위해 만들어진 테이블들이다. 유저 테이블과 공지 테이블을 @ManyToMany 어노테이션으로 다대다매핑을 해주었었다. “member_scrap_notice”라는 연결 테이블을 자동으로 생성해 주고 설정해 주니 편리했다. 다대다의 문제점 중간 테이블에는 매핑정보만 들어가고 추가 데이터를 넣는 것이 불가능하다. 중간 테이블이 숨겨져 있기 때문에 쿼리가 예상하지 못하는 형태로 나간다. 실무 비즈니스는 복잡해서 ManyToMany로 풀 수 있는 게 ..

프로젝트를 하다 보면 API요청이 잘 되는지 확인이 필요할 때가 많다. Swagger 같은 프레임워크를 사용할 수 있겠지만, 바로 적용하거나 급하게 할 때는 부담스러울 수 있다. 그래서 대부분 Postman을 많이 써왔을 것이다. 이제는 intelliJ에서도. http를 사용하여 API요청 테스트를 할 수 있다. 이 글에서는 기초만 다뤄보고자 한다. 유저를 등록하고, 등록한 유저를 가져오는 간단한 로직으로 예를 들어 설명하겠다. 매우 간단한 기초만 다룰 예정이기 때문에 궁금한 점은 공식문서를 통해 확인하면 좋을 것이다. https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html HTTP Client | IntelliJ IDEA ..