본문 바로가기

Spring15

[SpringBoot] @SpringBootApplication @SpringBootConfiguration, @EnableAutoConfiguration 스프링 부트를 의존성에 추가하면 (implementation 'org.springframework.boot:spring-boot-starter-web') 아래와 같이 @SpringBootApplication 애노테이션이 붙어있는 메인 클래스를 확인할 수 있어요. @SpringBootApplication public class SpringBootApplication { public static void main(String[] args) { SpringApplication.run(SpringBootApplication.class, args); } } 메인 클래스 부분에서 코드를 수정하는 부분은 거의없지만, 서비스의 시작이라는 관점에서 굉장히 중요한 부분이라 생각해요. @SpringBootAp.. 2021. 5. 10.
[SpringBoot] HttpSession 대신 HandlerMethodArgumentResolver 사용하기 HandlerMethodArgumentResolver란? HandlerMethodArgumentResolver는 사용자 요청이 Controller에 도달하기 전에 그 요청에 포함된 파라미터들을 수정할 수 있게 해주는 역할을 해요. Controller에서 @RequestBody 어노테이션을 사용해 Request의 Body 값을 받아올 때, @PathVariable 어노테이션을 사용해 Request의 Path Parameter 값을 받아올 때 이 HandlerMethodArgumentResolver를 사용해서 값을 받아온다고 해요. 1. HttpSession을 @LoginUser로 변경하기 @PostMapping public ResponseEntity saveChess(@RequestBody final Ch.. 2021. 5. 3.
[Network] DDos공격에 대응하는 법 먼저 Dos와 다른점을 살펴볼 필요가있어요 Dos(Denial of Service) Dos공격은 서비스 거부 공격의 약자로, 인터넷에 연결된 호스트의 서비스를 악의적으로 공격해 해당 시스템의 리소스를 부족하게 하여 사용자가 시스템 또는 네트워크 리소스를 사용할 수 없도록 만드는 사이버 공격이에요. 즉, 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 TCP 연결을 바닥내는 등의 공격이 이 범위에 포함돼요. DDos(Distributed DoS) 분산 서비스 거부 공격으로. 여러 대의 공격자를 분산적으로 배치해 동시에 서비스 거부 공격을 하는 방법이에요. 차이점 Dos는 공격자 PC에서 희생자 서버에게 바로 악의성 패킷을 보내요. 희생자가 공격자.. 2021. 5. 1.
[SpringBoot] 커스텀 애노테이션으로 Password규칙 적용하기 스프링 프레임워크가 기본적으로 제공하는 Validator이외의 Validator를 구현해야할 순간이 있습니다. 스프링은 컨트롤러에서 클라이언트에서 넘겨받은 값에 대한 검증을 JSR-303 기반으로 쉽고 강력하게 할 수 있습니다. 또 한 커스텀 한 어노테이션을 쉽게 구현할 수 있고 확장도 용이합니다. 애노테이션을 직접 만들기 위해서는 2가지 클래스가 필요합니다. @interface 클래스, ConstraintValidator의 구현 클래스 아래에서 작성하는 어노테이션은 해당 Password가 유효한지 검사를 하는 애노테이션입니다. 애노테이션 정의 import javax.validation.Constraint; import javax.validation.Payload; import java.lang.anno.. 2021. 1. 28.
[IntelliJ] Column Selection Mode(컬럼 선택 모드) for mac 개발을 하다 여러 줄을 동시에 편집해야 하는 순간이 생깁니다. Column Selection Mode(컬럼 선택 모드)? 먼저 컬럼 선택 모드라 부르는 기능이 무엇인지 살펴볼 필요가 있습니다. public class Student { private int age; private int tall; private String name; private String phoneNum; public Student(int age, int tall, String name, String phoneNum) { this.age = age; this.tall = tall; this.name = name; this.phoneNum = phoneNum; } } 현재 Student 클래스의 인스턴스들은 private으로 선언되어 .. 2021. 1. 28.
[Java] VO(Value Object)란? 개발을 하다 자주 VO라는 개념을 들은적이 있습니다. 대략적으로 값 객체 패턴(Value object pattern) 즉, 객체를 값처럼 쓸 수 있고, 제약사항 중 하나는 객체의 인스턴스 변수가 생성자를 통해서 일단 설정된 후에는 결코 변하지 않음을 보장한다는 것입니다. 저도 위와 같이 얕게만 알고있었는데, 이번 기회를 통해 제대로 알아보려 합니다. 제가 봤던 재미난 글을 통해 포스팅을 작성하려합니다. VO(Value Object)? 만약 아래와 같은 질문을 받았다고 생각해봅시다. 사람의 나이를 나타내기 위해 어떠한 변수 타입을 사용해야 할까요? [] Integer [] Boolean [] String 어떠한 결정을 내릴건가요? "Boolean은 true, false니까.. 일단 아니고,, Integer.. 2021. 1. 26.