일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링부트 계층구조
- IPC
- Java
- 어노테이션
- formmatted
- 로그인 인증 흐름
- spring
- ORM
- 비동기
- RESTfull API
- 스프링부트
- 스프링
- 스프링 부트 테스트
- ./gr
- JWT
- 퍼시스턴스 계층
- 스프링부트 구조
- 비즈니스 계층
- 작업명중복
- 토큰기반 인증
- java I/O
- MSA
- 로그인/로그아웃
- 세션기반 인증
- JPA
- http
- ./gradlew docker
- 프레젠테이션 계층
- @temproal
- 동기
- Today
- Total
목록분류 전체보기 (74)
[DEV] J-Jay
코드를 실행하니 아래와 같은 에러가 발생했다.> Process 'command 'C:\Program Files\jdk-17.0.2\bin\java.exe'' finished with non-zero exit value 1* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights. 어라...? 해결방법1. 검색을 해본 결과 아래와 같은 방법을 시도 하면 된다고 하지만... 1. File > Settings 메뉴 클릭 (단축키: ctrl + alt + s) 2..
@Temproal JPA를 사용시, 엔티티의 날짜에서 사용되는 어노테이션이다. 자바는 보통 java.util.Date 객체를 사용하지만, DB는 날짜도 여러 형태가 존재한다.예를 들어, date(년월일), time(시분초), timestamp(년월일 시분초) 또는 datetime 등의 타입등이다. 따라서, @Temporal이라는 어노테이션을 사용하여, DB 타입에 맞도록 매핑할 수 있다. TemporalType.Date : 년-월-일 의 date 타입TemporalType.Time : 시:분:초 의 time 타입TemporalType.TIMESTAMP : date + time 의 timestamp(datetime) 타입 어노테이션을 사용하지 않을 경우 기본값은 timestam..
문제 >./gradlew docker 터미널에서 위 코드를 실행시 아래와 같은 에러가 발생했다. > Configure project : 서비스명 task Jar명 output files > Task :서비스명:docker FAILED ERROR: error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/_ping": open //./pipe/docker_engine: The system cannot find the file specified. FAILURE: Build failed with an exception. * What went..
1. 로컬 저장소(repository) 만들기 본인이 원하는 경로에 작업할 디렉토리를 생성 2. Git 저장소 초기화 (git init) git init 3. git add / git commit git add . git commit -m "커밋 메시지" 4. 로컬 저장소와 원격 저장소 연결(git remote) git remote add origin https://github.com/사용자이름/저장소이름.git 5. 로컬 저장소의 변경 내용을 원격 저장소로 Push (git push) $ git push -u [원격 저장소 이름] [로컬 저장소의 브랜치 이름]
.idea ? 인텔리제이로 작업하다보면 .idea라는 폴더가 있다. .idea폴더는 VCS 매핑, 실행 및 디버그 설정파일, 현재 프로젝트를 사용하는 유저의 탐색 기록, 실행한 파일 목록 등의 상세 정보등을 저장하는 폴더이다. 즉, IDE옵션을 저장하는 폴더이며 각 컴퓨터 환경에 맞게 다르게 옵션이 저장된다고 보면 된다. 개발자들끼리 충돌이 일어나지 않을려면 .gitignore 파일에 .idea폴더를 작성해주면 좋다. #명령어 git rm --cached .idea # .gitignore 파일 *.idea
ExecutorService 1. Thread Pool을 이용하여 비동기적으로 작업을 실행하고, 관리한다. 2. 별도의 Thread를 관리하지 않아도 되므로 코드가 간결하게 유지된다 3. Thread 풀을 이용하여 자원을 효율적으로 관리한다. public interface ExecutorService extends Executor { //Runnable 인터페이스를 구현한 작업을 Thread Pool에서 비동기적으로 실행 void execute(Runnable command); /* Callable 인터페이스를 구현한 작업을 Thread Pool에서 비동기적으로 실행, 해당 작업의 결과를 Future 객체로 반환 */ Future submit(Callable task); /* ExecutorService..
Future 1. 비동기적인 작업을 수행한다. 2. 해당 작업이 완료되면 결과를 반환하는 인터페이스다. public interface Future { boolean cancle(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExcutionException; V get(long timeout, TimeUnit unit) throws InterruptedException, ExcutionException, TimeoutException; } isDone() Future의 상태를 반환한다. Task가 완료되었다면, 원인과 상관없이 True를 반환한다. isCan..
Blocking Caller는 Callee가 완료될떄까지 대기한다. 제어권을 Callee가 가지고 있다. Caller와 다른 별도의 Thread가 필요하지 않다(혹은 Thread를 추가로 쓸수도 있다) A: Caller는 getResult가 결과를 돌려 주기 전까지 아무것도 할 수 없다.(동기 - Blocking) B: Caller는 getResult가 결과를 구하고 callback을 실행하기 전까지 아무것도 할 수 없다. (비동기 - Blocking) → Caller는 getReulst가 완료 될 때까지 대기한다. (Blocking) → Caller를 호출한 후, Callee가 완료되기 전까지 caller는 아무것도 할수 없으며, 제어권을 Callee가 가지고 있다. Non-Blocking Callee..
JWT(JSON Web Token) 구현 build.gradle 의존성 추가 dependencies { //자바 JWT 라이브러리 implementation 'io.jsonwebtoken:jjwt:0.9.1' //XML 문서와 Java 객체간 매핑을 자동화 시켜주는 api implementation 'javax.xml.bind:jaxb-api:2.3.1' } 토큰 제공자 추가 JWT 토큰을 만들려면 발급자, 비밀키를 필수로 설정해야한다. application.yml jwt: issuer: j-jay secret_key: springboot-blog JwtProperties.java @Setter @Getter @Component @ConfigurationProperties("jwt") public cla..
사용자가 서버에 접근할 때 이 사용자가 인증된 사용자인지 확인하는 방법은 다양하다. 대표적인 사용자 인증 확인 방법에는 서버 기반 인증과 토큰 기반 인증이 있다. 서버기반 인증 스프링 시큐리티에서는 기본적으로 세션 기반 인증을 제공해 준다. 아래 글을 참고 바란다. https://dev-junick.tistory.com/57 스프링 부트 - 로그인/로그아웃 구현 스프링 시큐리티 설정 build.gradle (의존성 추가) dependencies { //스프링 시큐리티를 사용하기 위한 스타터 의존성 implementation 'org.springframework.boot:spring-boot-starter-security' //타임리프에서 스프링 시큐리 dev-junick.tistory.com 토큰기반 인..