Framework/Spring 6

[Spring] OOP와 비교하여 AOP 공부

OOP 복습 OOP(객체 지향 프로그래밍)은 객체를 중심으로 프로그래밍을 진행하는 것이다. 공통된 목적을 띈 데이터와 동작을 묶어 하나의 객체로 정의하는 것이 핵심으로, 특징으론 캡슐화(데이터와 그 데이터를 처리하는 메서드를 하나의 단위로 묶어), 은닉화(캡슐화의 목표. 내부 구조는 private하게 감춰두고 외부에서 조작할 수 있는 정보만 public으로 공개), 추상화(객체의 공통된 특성을 추출하여 모델링하는 과정), 상속(코드의 재사용성이 증가하고, 클래스 간의 계층 구조를 형성), 다형성( 동일한 메서드명이지만 다른 동작을 수행할 수 있도록 하는 기능), 동적 바인딩(다형성을 지원하는 매커니즘)이 있다. Spring에서도 역시 MVC 구조는 @Controller, @Service, @Reposit..

Framework/Spring 2024.04.17

[Spring] Security 설정 클래스 생성(세션 Stateless)

일반적으로 아래 파일은 config 패키지 안에 생성하여 관리한다. JWT 환경에서 스프링 시큐리티를 실습하기 위해 간단히 보안 config를 설정했다. @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf((auth) -> auth.disable()); http .formLogin((auth) -> au..

Framework/Spring 2024.04.17

[Spring] DTO

정의 Data Transfer Object 프로세스 간에 데이터를 전달하는 용도의 객체 주로 서로 다른 시스템 간에 데이터를 전송할 때 사용 비즈니스 로직을 포함하지 않는 데이터를 전달하기 위한 단순한 객체 DTO는 데이터를 캡슐화하여 전송 시에 데이터의 무결성을 유지 데이터 전송의 효율성을 높임 사용 이유 스프링 부트와 같은 MVC 패턴에서는, 보통 클라이언트와 컨트롤러 사이에서 DTO의 필요성이 생긴다. 아래 User 도메인은 위 그림과 같은 흐름으로 사용자와 DB 사이에서 이동하게 된다. public class User { private String id; private String name; private String email; private String password; public User(..

Framework/Spring 2024.04.17

[Spring] 회원가입 코드 통해 스프링 구조와 흐름 복습하기

복기하는 내용은 각 코드 주석에 상세히 달아보면서 복습 필요한 의존성을 추가하고 스프링 부트 애플리케이션을 설정해야 하므로, build.gradle 또는 pom.xml 파일에 아래와 같이 의존성을 추가 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-thymeleaf 회원 엔티티를 추가 import javax.persistence.Entity; import javax.persistence.Gene..

Framework/Spring 2024.04.11

[Spring] Flyway DB 마이그레이션

DB 마이그레이션이란? 기존 데이터베이스의 스키마와 데이터를 새로운 버전 또는 구조로 이전하는 작업 데이터의 백업, 변환, 이동 등의 작업을 포함 데이터베이스 시스템을 업그레이드하거나 확장 데이터의 일관성과 무결성을 유지하고 새로운 데이터베이스 버전으로 전환 시스템의 안정성과 확장성을 유지 동작 흐름 Application Context → Flyway 실행 → 스키마 생성 → hibernate validation(검증) → 적합한 스키마 실행→ 애플리케이션 실행 완료 Flyway는 스프링에서 DB 마이그레이션을 관리하는 오픈소스 도구. 이를 스프링에 적용하기 위해 먼저 Dependency에 Flyway관련 내용을 입력한다. org.flywaydb flyway-core application.properti..

Framework/Spring 2024.04.11

[Spring] Java 프로젝트 빌드를 위한 Gradle과 Maven의 비교

파이썬에서는 pip, venv 등으로 프로젝트를 진행한다. 마찬가지로 자바에서도 이러한 프로젝트 빌드를 위한 도구들이 존재하는데, 대표적인 도구가 바로 Gradle과 Maven이다. Maven: Apache Maven은 Java 프로젝트 관리 도구로, XML 기반의 프로젝트 객체 모델(POM)을 사용한다. Maven은 중앙 저장소에서 의존성을 가져오고 라이브러리를 다운로드하여 빌드를 수행한다. Maven의 빌드 라이프사이클은 사전 정의된 단계로 구성되어 있으며, 사용자는 특정 단계에 플러그인을 연결하여 확장할 수 있다. Maven은 간단한 프로젝트 구조 및 관리 철학을 제공하며, 표준화된 디렉터리 구조를 권장한다. Gradle: Gradle은 Apache Ant와 Apache Maven의 장점을 결합한 ..

Framework/Spring 2024.04.09