일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jQuery
- Java
- web
- real time web
- Project
- JPA
- session
- SseEmitter
- python
- DI
- oauth
- flask
- html
- Stream
- server send event
- WIL
- programmers
- Anolog
- jenkins
- cookie
- google oauth
- bean
- JWT
- 생명주기 콜백
- Spring Security
- spring
- javascript
- 항해99
- Hibernate
- hanghae99
- Today
- Total
목록Java (67)
끄적끄적 코딩일지
프로젝트를 진행하면서 Lombok 쓰면 편하게 코드를 작성할 수 있다. 생성자, Getter, Setter, Builder 등을 Annotation하나로 쉽게 만들수가 있어 코드의 가독성을 높혀준다. 하지만 이중에서 Setter는 가능한 사용을 지양해야하는데 그 이유를 알아보자 1. 값을 변경한 의도를 알기가 어렵다. Setter 자체에 오류가 있다기보다는 유지/보수 측면에서 잘 사용하지 않는다. 일단 setter를 사용하면 해당 값을 왜 변경했는지 알기 어렵다. 어떤 변수를 변경하는지는 쉽게 알 수 있지만 왜 해당 변수를 변경하는지는 쉽게 알 수가 없다. 이는 실무에서 코드를 유지보수할 때 꽤 불리하게 적용된다. 2. 객체의 일관성을 유지할 수 없다. @setter를 사용하면 모든 변수에 대하여 pub..
Spring에서는 Thymeleaf, JSP등을 사용하여 동적 WebPage을 만들 수 있다. 하지만 때에 따라서는 Front는 React으로 구성하고 BackEnd를 Spring을 사용하여 구성할 때가 있다. 하지만 React에서 Thymeleaf, JSP등의 Spring의 템플릿 엔진은 사용을 하지 못하고 React와 Spring은 서로 다른 구조를 가지고 있기 완전히 하나의 서버로 작동하지 못한다. 그렇다면 Spring과 React를 연동하기 위해서는 역할을 구분해야한다. Spring에서는 RestApi등을 사용하여 순수 데이터만 제공하고 React에서 Axios등을 써서 해당 Api를 호출하는 방식으로 해야한다. 하지만 기본적으로 Spring에서는 Cross-Origin요청을 제한하기 때문에 CO..
Spring에서 등록되는 Bean은 기본적으로 싱글톤 패턴으로 관리를 한다. 때문에 어디에서든 똑같은 Bean을 호출하면 하나의 인스턴스를 조회할 수 있다. 하지만 용도에 따라서 요청할때마다 다른 인스턴스가 필요하게 될때도 있다. 이를 위해서 Spring에서는 Scope를 지원한다. Scope에 들어가기 앞서 싱글톤 패턴과 프로토타입 패턴에 대해 짚어보고 들어가도록 하자 싱글톤 패턴(Singleton pattern) 이란? 어플리케이션이 시작할때 특정 class에 최초 한번만 메모리를 할당하고 해당 메모리 안에서 인스턴스(객체)를 만들어서 사용하는 방법이다. 때문에 어디에서든 항상 동일한 인스턴스를 조회할 수 있다. 싱글톤 패턴의 장점 인스턴스가 단 한번 생성되기 때문에 메모리 낭비를 줄일 수 있다. 전..
Bean을 사용하면서 초기화나 Bean 삭제시 발생시켜야할 이벤트를 지정해야할 때가 있다. 예를들어 Socket통신등 네트워크를 사용하는 객체는 프로그램 시작시 특정 Server와 연결하거나 프로그램 종료시 Bean 삭제시 해당 Server와의 연결을 안전하게 종료해야 할 때가 있다. 이처럼 Bean의 초기화나 종료 작업을 관리하는것을 Bean의 생명주기 콜백이라고 한다. 생명주기 콜백에서 초기화 작업은 모든 의존성이 주입된 후 호출된다. 1. Interface를 사용한 방법 Bean으로 등록되는 객체에 특정 Interface를 implement하는 방식으로 초기화는 InitializingBean, 종료는 DisposableBean을 사용하여 구현한다. @Component public class NetW..
Hibernate 란? JPA으로 구현된 대표적인 ORM 프레임워크이며 Spring에서는 기본적으로 Hibernate를 사용해서 Database와 CRUD를 수행한다. JPA란? 2022.06.01 - [Spring] - [Spring 기초] JPA 사용하기 [Spring 기초] JPA 사용하기 JPA란? Java Persistance API의 약자로 ORM(Object-Relational-Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. Java를 사용해서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스로써 SQL를 blablacoding.tistory.com ORM(Object-Relational Mapping) 일반적으로 알고 있는 Class와 database의 Table을 연결..
Spring Security란? Spring Web에서 사용자에 대한 인증과 권한등을 관리하고 주요 공격으로부터 어플리케이션을 보호하는 프레임워크이다. 명령형과 반응형 어플리케이션 모두에서 작동 가능하기때문에 Spring 기반 프로그램의 표준 보안 프레임워크로 사용된다. Spring Security 구조 1. 인증하기 사용자 인증을 하고 해당 정보를 저장하거나 권한을 검사하는등의 역할을 수행하는 아키텍처는 다음과 같다. 1. Client에서 로그인 요청(Id, Password 정보 전송) 2. AuthenticationFilter에서 받은 정보를 AuthenticationManager에게 요청 3. AuthenticationManager에서는 AuthenticationProvider에게 요청을 하여 사용..
Bean 등록방법 Spring에서 Bean을 등록하는 방법은 크게 xml 파일을 사용하는 방법과 Annotation을 사용하는방법 2가지로 나뉜다.(최근에는 Annotation을 사용하는 방법이 주로 쓰인다.) xml 파일으로 등록하는 방법 스프링은 시작시에 webapp/web.xml과 webapp/WEB-INF/spring/root-context.xml , webapp/WEB-INF/spring/servlet-context.xml 으로 bean을 등록한다. 1.web.xml : Spring 동작을 위한 설정정보이다. Spring 버전, 프로젝트명, 배포자, Bean을 등록하는 root-context.xml 혹은 servlet-context.xml 위치, welcom page등을 설정할 수 있다. 2. ..
저번글에서 대충 선택한 이미지 만큼 동적으로 해당 이미지와 이미지의 타이틀을 입력하는 항목을 추가하는것까지는 하였다. 2022.05.23 - [Project/[Spring] 이미지 월드컵 만들기] - [Spring]이미지 월드컵 만들기(5) - 이미지 업로드 설계(1) [Spring]이미지 월드컵 만들기(5) - 이미지 업로드 설계(1) 원래 저번글에서 마치고 Spring Security를 하려고 했으나 괜히 아직 없는 기능에 보안부터 적용하는것 같아서 그냥 UI부터 설계하기로 했다. 만들어야할 페이지는 메인(월드컵 리스트 표시),로그인, blablacoding.tistory.com 그렇게 만들었으니 서버에 올라가는걸 테스트 할 차례 일단 그대로 서버에서 어떻게 값이 날라올지 확인해 보았다. @PostM..
원래 저번글에서 마치고 Spring Security를 하려고 했으나 괜히 아직 없는 기능에 보안부터 적용하는것 같아서 그냥 UI부터 설계하기로 했다. 만들어야할 페이지는 메인(월드컵 리스트 표시),로그인, 회원가입, 월드컵 게임 페이지, 월드컵 게임 결과 페이지, 월드컵 게임 등록 페이지.... 분명 단순한 토이프로젝트로 시작하려고 했었는데 왤케 만들 페이지가 많지... 토이프로젝트니까 걍 로그인 기능 뺄까.... 어찌됬든 마음 다잡고 다시 개발 시작 일단 Javascript코드가 가장 복잡할것 같은 월드컵 게임 페이지부터 만들기로 했다. 그리고 이미지 선택 이벤트 js 파일 let sessionStorage = window.sessionStorage; let items = sessionStorage.g..
저번 글에서 필요한 데이터를 저장할 Table을 구현하였다. 2022.05.18 - [Project/[Spring] 이미지 월드컵 만들기] - [Spring]이미지 월드컵 만들기(3) - DB Entity 설계하기 [Spring]이미지 월드컵 만들기(3) - DB Entity 설계하기 이미지 월드컵의 주요 기능을 생각해 보자 기본적으로 로그인 기능 넣고 일단 한 게임안에 다수의 사진이 들어가야한다. 사진에는 간단한 타이틀이 붙는다. 그리고 게임이 끝났을때는 각 사진 blablacoding.tistory.com 이제 해당 데이터를 활용할 기능을 만들 차례이다. 일단 필요한 기능을 정의해 보자 단 데이터를 단순 조회하고 쓰고 지우는 기능은 제외해보자 1. ID 중복체크( 회원가입 ) 2. PW 암호화 3...