자바 47

[공부/Spring] 유효성 검사를 위한 Validation 처리

운영체제 : MacOS M1 IDE : IntelliJ Spring Boot : 2.7.8 Java : 11 JDBC : MyBatis 계기 회원가입의 경우 아이디, 비밀번호, 이메일 등 그 값이 일정한 형식을 지켜야 한다. 이를 체크해주는 메소드를 하나 하나 생성해줄 수도 있겠지만 이전에 @NotNull, @Email 등 유효성 검사를 해주는 어노테이션을 본 적이 있어 해당 어노테이션들을 이용해 유효성을 검사하고자 한다.  @Valid란? @Valid는 JSR-303 표준 스펙으로써 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션이다. 어노테이션으로 편리하게 검증을 해준다는 특징이 있다. Spring에서는 LocalValidationFactoryBea..

공부/Spring 2023.03.07

[공부/Spring] @ExceptionHandler 예외처리

운영체제 : MacOS M1 IDE : IntelliJ Spring Boot : 2.7.8 Java : 11 Persistence Framework : MyBatis 계기 회원가입을 구현하면서 성공을 제외하고 이메일 형식을 틀리거나, 이미 존재하는 아이디 등을 처리해줄 때 각 상황에 맞는 상태코드와 응답 Body에 넣어줄 메시지를 설정해주고 싶었다. 처음엔 서비스층에서 회원가입을 수행하다가 문제가 발생하면 그 문제를 컨트롤러에 전해주고, 컨트롤러에서는 문제가 무엇인지 판단하고 그에 맞는 상태코드와 응답 메시지를 만들려고 했다. 하지만 이 방법으로 구현하면 컨트롤러의 코드가 많이 지저분해지기도 하고, 서비스에서 어떤 문제인지를 판단을 한 상태이기 때문에 컨트롤러에서 또 그 문제에 맞는 상태코드와 응답 메시..

공부/Spring 2023.02.21

[도서/스프링 입문] #7 스프링 삼각형과 설정 정보

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. IoC/DI - 제어의 역전/의존성 주입 프로그래밍에서 의존성이란? A가 B를 의존한다는 건 의존대상B가 변하면 A에 영향을 미친다는 의미이다. 결론적으로 전체가 부분에 의존한다고 할 수 있다. 더 깊이 들어가면 전체와 부분인 객체 사이에 집합 관계(Aggregation)와 구성 관계(Composition)로 구분할 수 있다. 집합 관계 : 부분이 전체와 다른 생명 주기를 가질 수 있다. ex) 집과 냉장고 구성 관계 : 부분이 전체와 같은 생명 주기를 가진다. ex) 사람과 심장 앞으로 들 예시 Dirver : 운전자 클래스 Car : 자동차 클래스 Tire : 타이어 인터페이스 KoreaT..

[도서/스프링 입문] #6 스프링이 사랑한 디자인 패턴

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 스프링 프레임워크를 설명하는 공식적인 정의는 "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"이다. 각기 다른 소프트웨어 모듈이나 기능을 가진 다양한 응용 소프트웨어 시스템들을 개발할 때 서로 간에 공통되는 설계 문제가 존재하며 이를 처리하는 해결 사이에도 공통점이 있는데 이러한 유사점을 패턴이라 한다. 디자인 패턴은 23개로 나뉘는데 크게 생성(Creational), 구조(structural), 행위(Behavioral) 3가지로 분류된다. 이를 GoF(Gang of Four) 디자인 패턴이라 부른다. 각 분류 별 패턴 더보기 생성 패턴 : 객체 생성에 관련된..

[도서/스프링 입문] #5 객체 지향 설계 5원칙 - SOLID

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 객체 지향 설계 5원칙 SOLID는 응집도는 높이고(High Cohesion), 결합도는 낮추라(Low Coupling)는 고전 원칙을 객체 지향의 관점에서 재정립한 것으로 유지보수성을 극대화해주는 원칙이다. 응집도 : 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로, 응집도가 높은 모듈은 하나의 책임에 집중하고, 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이 응집도가 높으면 변경 대상과 범위가 명확해짐 결합도 : 모듈간의 상호 의존 정도로서 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용성이나 수정, 유지보수가 용이 결합도가 낮으면 검토해야 되는 소스의..

[도서/스프링 입문] #4 자바가 확장한 객체 지향

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. abstract 키워드 - 추상 메소드와 추상 클래스 추상 메소드는 선언부는 있는데 구현부가 없는 메소드를 의미하고, 추상 메소드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스로 선언해야 한다. 추상 클래스는 인스턴스를 만들 수 없고, 하위 클래스에게 메소드 오버라이딩을 강제한다. 생성자 생성자를 따로 만들어주지 않으면 자바에서 인자가 없는 기본 생성자를 자동으로 만들어 준다. 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다. 클래스 생성 시의 실행 블록, static 블록 static 블록은 클래스가 스태틱 영역에 배치될 때 실행되는 코드 블록으로 한번만 ..

[도서/스프링 입문] #3 자바와 객체 지향

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 객체 지향은 인간 지향이다 객체 지향은 사람이 주변에서 사물을 인지 하는 방식대로 프로그래밍하기 위해 탄생한 개념이다. 객체 지향의 4대 특성 - 캡! 상추다 캡슐화(Encapsulation) : 정보 은닉 (information hiding) 상속(Inheritance) : 재사용 추상화(Abstraction) : 모델링 다형성(Polymorphism) : 사용 편의 클래스 vs. 객체 클래스는 같은 속성과 기능을 가진 객체를 총칭하는 집합의 개념이고, 객체는 세상에 존재하는 유일무이한 사물을 의미하고 객체는 클래스의 인스턴스라는 표현을 사용한다. 추상화 : 모델링 추상화는 모델링이다 객체 ..

[도서/스프링 입문] #2 자바와 절차적/구조적 프로그래밍

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 자바 프로그램의 개발과 구동 JVM(Java Virtual Machine) 자바 가상기계로 가상의 컴퓨터 JRE(Java Runtime Environment) 자바 실행 환경으로 가상의 컴퓨터를 제어하는 운영체제 자바 프로그램 실행기인 java.exe와 JVM을 포함 JDK(Java Development Kit) 자바 개발 도구로 라이브러리 등에 해당 자바 소스 컴파일러 javac.exe와 JRE를 포함 코드 실행 영역와 데이터 저장 영역으로 분리되는데, 객체 지향에서 데이터 저장 영역은 Static, Stack, Heap 영역으로 나누어서 사용한다. 자바에 존재하는 절차적/구조적 프로그래밍의..

[도서/스프링 입문] #1 사람을 사랑한 기술

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 신기술은 이전 기술의 어깨를 딛고 스프링을 이해 하기 전 필요한 개념 SOA(서비스 지향 아키텍처) CBD(컴포넌트 기반 개발) OOP(객체 지향 프로그램) 절차적/구조적 프로그래밍 기계어나 어셈블리어 기계어에서 객체 지향 프로그래밍 언어로 어셈블리어 - 0과 1의 행진을 벗어나 인간 지향으로 / 기계어 니모닉 어셈블리 : 니모닉(Mnemonic)과 기계어의 일대일 매칭 코드표 어셈블리어(Assembly Language) : 니모닉과 기계어의 일대일 매칭 언어, CPU 별로 각자의 어셈블리어가 달랐음 어셈블러(Assembler) : 어셈블리어를 기계어로 번역해주는 소프트웨어 니모닉(Mnemon..

[도서/자바의 신] #33 Java 8에서 변경된 것들은?

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. Lambda 표현식(expression) Java8부터 추가된 람다 표현식은 익명클래스의 가독성이 떨어진다는 단점을 보완하기 위해 만들어졌다. 대신 람다 표현식은 인터페이스에 메소드가 "하나"인 것들에만 적용이 가능하다. 람다 표현식은 익명 클래스로 전환이 가능하며, 익명 클래스는 람다 표현식으로 전환이 가능하다. 메소드가 하나인 인터페이스에는 대표적으로 Runnable, Comparator, FileFilter 등이 있다. 사용자가 구현한 인터페이스에서도 람다 표현식을 사용할 수 있다. 람다 표현식 매개 변수 목록 화살표 토큰(Arrow Token) 처리 식 (int x, int y) -> x+y 예제 interface Cal..

728x90