일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- github
- 세마포어
- CS
- package-private
- 깃허브
- 코테
- 컴퓨터공학
- 신입사원
- java
- 신입
- 프로그래밍
- IT
- 우리카드
- 코스콤
- 운영체제
- Effective Java
- OS
- 정보처리기사
- koscom
- 컴퓨터과학
- 자바
- 개발
- 코딩테스트
- 공채
- 알고리즘
- 스프링
- 뮤텍스
- spring
- 이펙티브 자바
- 금융
- Today
- Total
목록분류 전체보기 (121)
주니어 개발자 성장기

가이드 참고 일단 Spring Security를 통한 인증을 먼저 구현하기 위해 Spring Security Guide 를 참고한다. Getting Started | Securing a Web Application Getting Started | Securing a Web Application Suppose that you want to prevent unauthorized users from viewing the greeting page at /hello. As it is now, if visitors click the link on the home page, they see the greeting with no barriers to stop them. You need to add a barrier t..

목적 여태까지 모든 프로젝트에서 JWT 토큰과 OAuth를 사용해서 인증 기능을 구현했었다. 그래서 이번에는 JWT가 아닌 Session 인증을 사용해서 예제 프로젝트를 만들어보려고 한다. 시작하기에 앞서, 각 인증 방식의 장단점을 비교해보자. 토큰 인증 방식 아래는 Glims 프로젝트에서 테스트용으로 발급한 JWT 토큰이다. eyJ0eXAiOiJqd3QiLCJhbGciOiJIUzUxMiJ9 .eyJzdWIiOiJ3bnN2eTYwN0BuYXZlci5jb20iLCJpYXQiOjE2ODQyMzQxMzcsImV4cCI6MTY4NDMyNDEzNywid G9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsInJvbGUiOiJST0xFX1VTRVIifQ .kZNkxiSoy5OpdWhqyJS0x0ru3Hc..
싱글톤 패턴 구현 스프링의 도움 없이 순수 자바로 싱글톤 패턴을 구현해보자. 영문 위키피디아에 따르면 구현 절차는 간단하게 다음과 같다. 다른 객체에 의해서 초기화되는 것을 방지하기 위해 모든 생성자를 private 으로 선언한다. 인스턴스에 대한 참조(reference)를 반환하는 정적(static) 메서드를 제공한다. 위의 절차에 따라 구현하는 방법이 크게 5가지가 있다. 결론부터 말하자면, 가장 바람직한 모델은 5번 Bill Pugh 구현과 Enum 구현이다. 그럼 차례대로 직접 구현해보자. 1. Eager Initialization Eager Initialization은 클래스 로딩 단계에서 인스턴스를 생성하는 방법이다. // 싱글톤 객체 public class EagerSingletonServ..
디자인 패턴이란? In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. 출처: 위키피디아 소프트웨어 설계 중 특정한 상황에서 흔히 일어나는 문제들에 대한 일반적이고 재사용 가능한 해결책이라고 할 수 있다. 수천가지의 디자인 패턴들이 존재하지만 제일 유명한 것은 "Gang of Four" design patterns 에 나온 23가지 디자인 패턴들이다. 싱글톤 패턴 싱글톤 패턴은 하나의 클래스가 오직 하나의 인스턴스만을 갖는 것을 보장하는 생성 디자인 패턴(creational de..

빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다. 객체 생성 -> 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다. 그런데 개발자가 의존관계 주입이 모두 완료된 시점을 어떻게 알 수 있을까? 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링..

엔티티에는 가급적 Setter를 사용하지 말자 Setter가 모두 열려있으면, 변경 포인트가 너무 많아서, 유지보수가 어렵다! 모든 연관관계는 지연로딩으로 설정! (중요) 즉시로딩 (EAGER)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 실무에서 모든 연관관계는 지연로딩(LAZY)으로 설정해야 한다! 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다. @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시 로딩이므로 직접 지연로딩으로 설정해야 한다. 컬렉션은 필드에서 초기화 하자. 컬렉션은 필드에서 바로 초기화하는 것이 안전하다. null 문제에서 안전하다. 하이버..