인증을 알아보기 이전에, 스프링 시큐리티의 필터를 먼저 알아야한다. 필터에서의 주요 개념들은 이전 글을 통해 확인할 수 있다.2024.11.17 - [Framework/Spring] - Spring Security 의 첫 걸음 Spring Security 의 첫 걸음스프링 시큐리티에 대해 전무한 상태였다.스프링 시큐리티를 이용하면 사용자의 인증, 인가 그리고 보안 처리를 할 수 있다. 그 과정에서 필터는 가장 중요한 핵심이라는 것을 알게 되었지만 그yeongnius.tistory.com 스프링 시큐리티에서 인증은 어플리케이션 보안의 첫 번째 단계이다. 어플리케이션에 접근하려는 사용자가 누구인지 확인하는 절차는 보안의 시작이자 중요한 요소 중 하나이다. 나중에 알아 볼 인가(Authorization)의 기..
스프링 시큐리티에 대해 전무한 상태였다.스프링 시큐리티를 이용하면 사용자의 인증, 인가 그리고 보안 처리를 할 수 있다. 그 과정에서 필터는 가장 중요한 핵심이라는 것을 알게 되었지만 그만큼 어렵게 느껴졌기 때문에 필터에 대해 천천히 알아보려고 한다.Filter와 FilterChainFilter클라이언트의 요청과 응답에 대해 전처리, 후처리를 수행하는 컴포넌트로 서블릿 앞 단에 위치해서 클라이언트의 요청-응답을 가로채서 인증, 인가, 로깅, 보안 등의 작업을 처리한다. 필터는 서블릿 컨테이너의 컴포넌트로 서블릿 컨테이너에 의해 관리된다. 이때 필터는 서블릿 컨테이너의 필터일 수도 있고, 스프링에서 제공하는 필터일 수도 있고, 개발자가 만든 필터일 수도 있다. 즉, 필터는 서블릿 컨테이너 내에서 관리되지만..
스프링부트의 자동 구성(auto-configuration) 기능은 개발자가 수동으로 필요한 설정을 하는 하는 번거로움을 줄여준다. 때문에 개발자는 복잡한 설정 과정을 하지 않고 비즈니스 로직에만 집중할 수 있다. 이 글에서 스프링부트에서 자동구성의 원리와 그 작동 방식에 대해 알아보려고 한다. auto-configuration 정의스프링부트에서 애플리케이션을 시작할 때 필요한 설정을 자동으로 구성해주는 기능을 제공한다. 즉, 개발자가 수동으로 필요한 설정을 하지 않아도 기본적인 설정이 자동으로 적용된다는 것이다. 예를들어, mysql 드라이버가 클래스패스에 존재하고 데이터베이스 연결과 관련된 설정을 하지 않더라도 application.properties에 관련 설정 정보만 작성해준다면 스프링부트는 자동으..
[ Spring Study ] 스프링에 대해 전반적인 구조 및 흐름에 대해서 몰랐던 부분이 너무나 많다는 걸 깨닫게 되는 순간.. 한번쯤 어디선가 읽어봤던 내용들에 대해 개념을 제대로 알고자 스프링에 대해 처음부터 공부하게 되었다. 경보 속도로 공부해 보자!!! 서블릿과 서블릿 컨테이너에 대해 알아보기 이전에, 간단하게 웹서버와 웹애플리케이션 서버를 짚고 넘어가자. Web Server는 HTTP 기반으로 동작하는 서버로, 정적 리소스를 제공하며 대표적으로 Apache, Nginx 가 있다. Web Application Server는 HTTP 기반으로 동작하는 서버로, 정적 리소스를 포함하여 동적 리소스를 제공하며 대표적으로 Tomcat, Jetty 가 있다. 왜 서버에 대해서 이야기를 했냐면, 웹 애플리..
[ Spring Study ] 스프링에 대해 전반적인 구조 및 흐름에 대해서 몰랐던 부분이 너무나 많다는 걸 깨닫게 되는 순간.. 한번 쯤 어디선가 읽어봤던 내용들에 대해 개념을 제대로 알고자 스프링에 대해 처음부터 공부한다. 경보 속도로 공부해보자 ! ! ! . . 한번 쯤 DispatcherServlet 에 대해 들어 본 적이 있으며, 유명한 Spring Request 처리 방식에 대한 그림도 본 적이 있다. 하지만 여러 번 보고 듣는다 한들 전부 뇌리에 스쳐 지나갔다. 지금이라도 Spring 에서 사용자의 요청을 어떻게 처리하는지에 대해서 자세히 알아봐야 하지 않을까 ? . . DispatcherServlet 은 spring 기반 웹 애플리케이션의 Front Controller 역할을 한다. 🤚 F..
순환참조(Circular dependencis)는 객체 A가 객체 B를 의존하고 있을 때 객체 B가 객체 A를 의존하고 있을 때 발생한다. 즉, 객체끼리 서로 의존하고 있을 때 발생하는 것이다. 예로 A, B, C 객체가 있고 A 객체는 B를, B 객체는 C를 의존하고 있다고 가정해보자. * A -> B -> C 스프링 컨테이너는 A객체를 생성하려고 보니 B객체를 의존하고 있어 B객체를 생성하려고 하는데 B객체는 C객체를 의존하고 있어서 결국엔 C를 먼저 생성하고, B를 생성하고 A를 생성할 것이다. * C -> B -> A 하지만, 위 객체들이 서로 의존하고 있다고 하면 스프링은 어느 객체를 먼저 생성해야 하는지 결정하지 못한다! A 객체를 만들려고 보니까 B 객체를 의존하고 있네 ? 근데 B 객체가 ..
N + 1 문제에 대해서 알아보기 이전에 JPQL 부터 간단하게 알아보자JPQL(Java Persistence Query Language) 는 엔티티의 객체를 대상으로 검색하는 객체 지향 쿼리이다.EntityManager.find() 메소드를 사용하면 식별자로 엔티티 하나를 조회하여 객체 그래프 탐색을 사용하면서 연관된 엔티티를 찾을 수 있다.하지만 이것만으로는 복잡하거나 어려운 쿼리문을 사용하기에 힘들어진다.이를 해결하고자 만들어진 것이 바로 JPQL이다. (☞゚ヮ゚)☞ JPA 과 JPQL 관계JPQL을 사용하면 JPA는 해당 JPQL을 분석한 다음 적절한 SQL을 만들어서 데이터를 조회한다.조회된 결과값을 엔티티 객체를 생성해서 반환한다.예시)@Repositorypublic interface User..
앞서 프록시에 대해서 알아보았다.프록시 객체는 지연로딩 시 사용한다고 했는데 지연 로딩은 무엇이고 또 다른 전략인 즉시 로딩이 무엇인지 한번 알아보자.member1이 team1에 소속해 있다고 가정해보자.Member member = em.find(Member.class, "member1");Team team = member.getTeam(); //객체 그래프 탐색System.out.println(team.getName()); //팀 엔티티 사용회원 엔티티를 조회할 때 연관된 팀 엔티티도 함께 데이터베이스에서 조회하는 것이 좋을까?아니면 회원 엔티티만 조회해 두고 팀 엔티티는 실제 사용하는 시점에 데이터베이스에서 조회하는 것이 좋을가?JPA는 개발자가 연관된 엔티티의 조회 시점을 선택할 수 있도록 다음 두..
엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다.예를들어 회원 엔티티를 조회할 때 연관된 팀 엔티티는 비즈니스 로직에 따라 사용될 때도 있지만 그렇지 않을 때도 있다.그럼 팀 엔티티를 필요할 때 조회하면 어떨까?그러기 위해서 JPA는 엔티티가 실제 사용될 때까지 데이터베이스에서 조회를 지연하는 방법 즉, 지연로딩을 제공한다.그럼 지연로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데이것을 바로 프록시 객체라고 한다. 프록시 구조를 먼저 살펴보자.프록시 클래스는 실제 클래스를 상속 받아서 만들어진다.따라서 실제 클래스와 겉 모양이 같고 우리는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다. 프록시 객체의 초기화 과정을 알아보..
양방향 연관관계 매핑@Entitypublic class Member { @Id @Column(name = "MEMBER_ID") private String id; private String username; @ManyToOne @JoinColumn(name="TEAM_ID") private Team team; //연관관계 설정 public void setTeam(Team team) { this.team = team; } //getter, setter}@Entitypublic class Team { @Id @Column(name = "TEAM_ID") private String id; ..
- Total
- Today
- Yesterday
- fail-safe
- 정적변수
- fail-fast
- Hash
- @conditional
- 로드 밸런서
- object
- spring boot
- Sticky Session
- JPA
- java
- nosql
- Load Balancer
- 추상클래스
- Spring
- 자동구성
- 다중화
- 고정 세션
- HashMap
- Red-Black Tree
- 오블완
- AutoConfiguration
- Caching
- Security
- syncronized
- nginx
- HashSet
- 인터페이스
- 인스턴스변수
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |