일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- spring cloud
- vm
- virtualization
- 데이터베이스
- 컨테이너
- 스프링 부트
- ORM
- spring boot
- Spring
- 배포
- Spring Security
- CS
- 백엔드
- 스프링 배치
- spring batch
- 웹 서버
- 스프링
- 도커
- JPA
- HTTP
- web server
- Container
- Java
- 가상화
- mysql
- 자바
- CI/CD
- 스프링 시큐리티
- 영속성 컨텍스트
- computer science
- Today
- Total
목록spring boot (33)
개발 일기

이전 게시글에서 로그 레벨까지 알아봤고 이제 실제 EC2에서 돌아가고 있는 스프링 컨테이너는 로깅이 어려웠기 때문에 로깅을 할 수 있도록 로깅 프레임워크를 적용 후에 컨테이너를 갈아 끼울 예정이다.Logback에 대해Logback을 사용할때 application.yml을 통해서 설정이 가능하지만 디테일한 설정을 하는데에는 한계가 있다. 그래서 logback-spring.xml을 통해 조금 더세부적인 설정이 가능하다. logback-spring.xml / logback-spring.groovy / logback.xml / logback.groovy의 이름을 한 파일을 스캔하고 이를 바탕으로 로그 설정이 적용된다. 이때 logback-spring.xml이 Spring Boot에 특화된 설정 파일이였다. Ap..

이전 게시글에 이어 SecurityFilterChain의 내부 구조에 대해 정리해보겠다. 우선 SecurityConfig에 @EnableWebSecurity(debug = true)를 달아놓고 요청을 보내보면 다음과 같이 로그가 찍힌다. 실제로 통과하는 로그가 찍히는 것이다. 왼쪽은 SecurityFilterChain을 지정해놓지 않고 돌렸을때 오른쪽은 선언 후 돌렸을 때이다.즉, 디폴트로 저러한 필터들이 동작하고 있다는 것이다. 기본으로 설정된 필터들 중 쓰고 싶지 않은 것은 비활성화 시키고 쓰고 싶은 것 중 디폴트가 아닌 필터는 직접 활성화 시켜야한다. 앞으로 실제로 사용할때마다 하나씩 정리해보겠다.DisableEncodeUrlFilterURL로 간주되지 않는 부분을 포함하지 않도록 설정WebAsyn..

기존에는 Express로만 개발을 해봤기 때문에 인증 인가를 도와주는 프레임워크라는 것이 따로 없었다.그러나 이번에 스프링을 공부를 해보니 인증 인가를 도와주는 스프링 시큐리티라는 프레임워크를 제공했다.그래서 스프링 시큐리티가 무엇인지, 어떻게 동작하는건지에 대해 이해 후 적용해보기 위해 정리하게 됏다.Spring SecuritySpring 공식 문서를 보면 다음과 같이 쓰여져 있다."Spring Security is a framework that provides authentication, authorization, and protection against common attacks.."즉, 인증, 권한 부여, 그리고 일반적인 공격으로부터의 보호를 제공하는 프레임워크라고 한다. 이는 Filter를 통해..

공부하게된 계기스프링 시큐리티를 공부할때 인증, 인가 그리고 XSS, CSRF와 같은 공격을 방어해주는 기능을 필터를 통해 처리한다고 했는데 이 필터가 무엇인지 잘 알지 못했고 대충 검색해보니 필터와 함께 인터셉터라는 개념이 함께 나와서 정리해보게 됐다. 필터는 서블릿, 인터셉터는 스프링이 제공한다.필터와 인터셉터 개념을 도입한 이유그렇다면 왜 필터라는 개념을 도입했을까? 바로 공통 관심사 때문이다.예를 들어서 로그인을 한 사람만 상품을 등록할 수 있어야 하고 상품 수정을 할때 해당 상품 등록자만 그 권한을 줘야 한다. 이럴때는 상품 관리의 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인하면 된다. 예를들면 상품 등록 컨트롤러와 상품 관리 컨트롤러 등 모든 상품 관련 컨트롤러 마다 공통적으로 각각 로..

ServletCGI의 등장처음 웹 프로그래밍에서 웹 서버는 정적 데이터만 전달하면 됐다. 누가 접속하던지에 관계 없이 똑같이 정적인 데이터를 기반으로 뷰를 렌더링하면 됐다. 즉, 웹 서버는 사용자(요청)에 맞게 동적인 데이터를 처리할 필요가 없었다.그러나 웹 페이지에서 동적인 컨텐츠의 제공의 필요성이 생기게 됐다. 이를 위해 CGI라는 것이 나오게 된다. CGI의 문제점 및 Servlet의 등장동적 데이터를 처리하는 CGI (Common Gateway Interface)는 이름에서 알 수 있듯이 인터페이스 이다. 인터페이스는 하나의 규약이라고도 한다. 구현체는 이 인터페이스를 기반으로 구현되어야 한다. 그래서 웹 서버(Apache)와 CGI 구현체(C, PHP 등) 사이의 규약을 CGI라고 할 수 있..

MVC란?MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴 중 하나이다.애플리케이션의 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식이다.MVC 패턴을 도입하면서 UI 영역과 도메인(비즈니스 로직) 영역으로 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수가 가능하다.ModelModel은 애플리케이션의 데이터와 상태를 담당한다. 예를 들어, 사용자 정보를 저장하는 User 클래스가 Model에 해당합니다.Controller에서 사용자 입력(DTO)을 받아 User 객체를 생성하고, 이 객체를 View에 전달하여 화면에 표시할 수 있다.또한 Model에는 데이터베이스 연동을 위한 DAO(Data Access Object)..

경로 표현식 .(점) 을 통해 객체 그래프를 탐색하는 것으로 상태 필드(state field) : 단순히 값을 저장하기 위한 필드 (ex: m.username) 경로 탐색의 끝으로 더이상 탐색 불가하다. 연관 필드(association field) : 연관관계를 위한 필드 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team) 묵시적 내부 조인(inner join) 발생, 탐색O 컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders) 묵시적 내부 조인 발생, 탐색X -> 결과가 컬렉션이기 때문에 속성 값에 접근할 수 없다. 묵시적 조인은 실무(큰 프로젝트)에서는 사용을 지양해야한다. 튜닝하기 엄청 어려워진다..

기본값 타입 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능하다. ex) 회원 엔티티의 키, 나이 값이 변경 되도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 기본값 타입 - 자바 기본 타입(int, double) - primitive type - 래퍼 클래스(Integer, Long) - String 생명 주기를 엔티티에 의존, ex) 회원 삭제 시 이름, 나이 등 필드들 함께 삭제 값 타입은 공유하면 X, ex) 회원 이름 변경 시 다른 회원의 이름도 함께 변경되..