개발중632 [Spring] 스프링 생성자 주입 방법 3가지 스프링에서는 의존성 주입이라는 특징이 있는데, 의존성을 주입하기 위한 세 가지 방법을 알아보자. 1. 생성자 주입(Constructor Injection) 클래스의 생성자가 하나이고, 그 생성자로 주입받을 객체가 빈으로 등록되어 있다면 @Autowired를 생략 할 수 있다. @Controller public class binsooController { private final BinsooService binsooService; @Autowired public binsooController(BinsooService binsooService) { this.binsooService = binsooService; } } 2. 필드 주입(Field Injection) 필드에 @Autowired 어노테이션만 붙여.. 개발중/Spring 2023. 1. 20. [QueryDsl 에러] java.lang.NoSuchFieldError: TREATED_PATH java.lang.NoSuchFieldError: TREATED_PATH at com.querydsl.jpa.JPQLTemplates.(JPQLTemplates.java:147) ~[querydsl-jpa-5.0.0.jar:na] at com.querydsl.jpa.JPQLTemplates.(JPQLTemplates.java:51) ~[querydsl-jpa-5.0.0.jar:na] at com.querydsl.jpa.JPQLTemplates.(JPQLTemplates.java:46) ~[querydsl-jpa-5.0.0.jar:na] at com.querydsl.jpa.impl.JPAProvider.(JPAProvider.java:59) ~[querydsl-jpa-5.0.0.jar:na] at com... 개발중/Troubleshooting 2023. 1. 20. [Spring Data JPA] No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call 에러 해결 No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call @Transactional 어노테이션을 명시하지 않아서 발생하는 에러이다. 기본적으로 JPA는 transaction을 기반으로 작동하게 되어있다. transaction 단위에 따라 1차캐시영역.. 개발중/Troubleshooting 2023. 1. 19. [Querydsl 에러] java.lang.NoClassDefFoundError: com/google/common/collect/Multimap 기존 querydsl 라이브러리는 다음과 같다. querydsl-jpa 라이브러리에 com/google/common/collect/Multimap 가 존재한다. com.querydsl querydsl-jpa 4.1.3 com.querydsl querydsl-sql 4.1.4 com.querydsl querydsl-apt 4.3.1 Core 를 추가시켜 주자. com.querydsl querydsl-core 4.3.1 개발중/Troubleshooting 2023. 1. 18. JWT 인증과 Session 인증의 차이 JWT JWT는 JSON Web Token의 약자로써 세션에 사용자 데이터를 저장하는 전통적인 쿠키 세션 방식과 다르게 json 객체에 사용자 정보의 일부를 담는다. 기존 쿠키 세션 동작 방식과 문제점 쿠키 세션 방식을 사용하는 이유를 이해하기 위해선 HTTP 프로토콜의 특성을 이해할 필요가 있다. Stateless HTTP 프로토콜은 클라이언트와 서버의 통신이 끝나자마자 상태 정보를 잊어버린다. 예를 들어 USER1이 방금 전까지 서버와 통신을 했더라도 연결이 끊기자마자 USER1이 누구인지 까먹어버리고 다시 클라이언트의 정보를 요구하는 것이다. 페이지를 이동할때마다 내가 누구인지 확인하는 로그인 창이 뜨면 매우 귀찮을 것이다. 이를 해결하기 위해서 세션과 쿠키라는 기술을 사용한다. 로그인 과정 세션은.. 개발중/Spring 2023. 1. 18. [SpringBoot] SpringBoot Retrofit Retrofit 이 뭐야 ? OKHttp 라이브러리를 기반으로 http 통신을 할 수 있게 도와주는 자바 라이브러리이다. 보통 안드로이드 또는 스프링 웹 어플리케이션 서버에서 외부 서버와 API 통신을 하기 위해 사용합니다. JAVA에서 HTTP 통신을 하기위한 대표적인 라이브러리가 HttpUrlConnection 이다. HttpUrlConnection의 단점 - 코드가 길어지며 가독성이 떨어진다. - Json 으로 받은 객체를 일일이 Convert 해야한다. HttpUrlConnection의 장점 - 가독성이 높아진다. - Json 으로 받은 객체를 일일이 Convert 해야한다. import java.util.List; import retrofit2.Call; import retrofit2.http... 개발중/Spring 2023. 1. 17. JPA ( Java Persistence API ) Transaction 🧐 트랜잭션이란 ? DB 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들 🧐 JPA 트랜잭션 격리수준 트랜잭션이 보장해야하는 ACID 중 격리성과 관련된 내용인데 격리성을 완벽히 보장하려면 동시성 처리 성능이 매우 나빠진다. 이런 문제로 인해 ANSI 표준은 트랜잭션의 격리 수준을 4단계로 나누어 정의했다. Atomicity; 원자성 트랜잭션 내의 작업들은 모두 성공 또는 모두 실패한다. Consistency; 일관성 모든 트랜잭션은 일관성 있는 DB 상태를 유지한다. (ex: DB의 무결성 제약 조건 항상 만족) Isolation; 격리성 동시에 실행되는 트랜잭션들은 서로 영향을 미치지 않는다. (ex: 동시에 같은 데이터 수정 X) D.. 개발중/Java Persistence API (JPA) 2023. 1. 13. JPA ( Java Persistence API ) JPA ( Java Persistence API ) ▶ 개념 • 자바 진영에서 ORM( Object - Relational Mapping ) 기술 표준으로 사용되는 인터페이스 모음 • 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크 • JPA 를 구현한 대표적인 오픈소스로는 Hibernate가 있다. JPA 구현체 ※ ORM( Object - Relational Mapping ) • 객체와 관계형 데이터베이스의 데이터를 자동으로 Mapping( 연결 ) 해주는 것을 의미한다. • 객체지향 프로그래밍 - 클래스 사용 / 관계형 데이터베이스 - 테이블 사용 객체 모델과 관계형 모델간의 존재하는 불일치를 ORM을 통해 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치 해결한다. ▶ JPA 동작.. 개발중/Java Persistence API (JPA) 2023. 1. 10. [Spring] framework 와 Spring 에 대해서 알아보기 스프링 이름도 힘든 개발을 했던 겨울이 가고 개발하기 좋은 봄이왔다는 것을 의미한다. 프레임워크와 스프링부트 애플리케이션을 만들 때 프레임워크 없이 개발하는 것은 어렵고 고된일이다. 프레임 워크는 용도에 맞는 일반적인 기능들을 보편적인 방식으로 제공한다. 예를 들어 웹 애플리케이션은 HTTP 프로토콜을 사용하여 사용자 요청에 따른 적절한 응답을 한다. 그래서 웹 애플리케이션 프레임 워크는 HTTP 프로토콜 기반의 요청(request)과 응답(response) 울 처리할 수 있도록 특정 객체나 클래스등을 제공한다. 개발자는 프레임워크에서 제공하는 기능을 사용하면 보다 편리하고 쉽게 애플리케이션을 개발할 수 있으며, 이는 곧 개발자의 개발자의 생산성향상으로 이어진다. 프레임워크를 선택하는 방법도 다양하다. .. 개발중/Spring 2022. 12. 30. [Spring] 단일책임원칙을 지키고 있나요 객체지향의 주요 5가지 원칙(SOLID) SRP (Single Responsibility Principle) 단일 책임 원칙 OCP (Open Closed Principle) 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) 리스코프 치환 원칙 ISP (Interface Segregation Principle) 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) 의존 역전 원칙 객체지향 5원칙은 왜 필요한가? 올바른 객체지향 설계를 위해 수립한 원칙들이며 통틀어 객체지향 5원칙(SOLID)이라고 불립니다. 이는 필수로 적용하지는 않지만 적어도 이 원칙을 준수할수록 올바르게 설계된 객체지향이라 할 수 있습니다. 프로그래머가 시간이 지나도 유.. 개발중/Spring 2022. 12. 16. [Spring] JPA Specification 를 이용해 검색 API 개발하기 ✍ 일단, 저는 JPA 에 대해 매우 큰 관심이 있습니다. 하지만 우리 회사에서는 사용하지 않기에, JPA 에 대해 공부를 해보려고 합니다 ! Spring Jpa Progect Ex ✍ GitHub - soobinJung/Jpa_Defalut: Spring Jpa Specification Test Spring Jpa Specification Test. Contribute to soobinJung/Jpa_Defalut development by creating an account on GitHub. github.com 아래와 같은 결과 값을 반환하는 간단한 API 를 구상해보았습니다. 더보기 http://localhost:8080/api/user [ { "id": 1, "userName": null, "pas.. 개발중/Java Persistence API (JPA) 2022. 12. 5. intellij jdk 설정하는 방법 기록하기 ✍ Project Structure창 (단축키 : SHIFT+CTRL+ALT+S) 1) SDK 변경 2) Language Level 변경 3) Language Level 변경 4) 원하는 JDK를 선택한다(JDK는 한 폴더에 모아두는것을 추천!) Project Setting (단축키 : CTRL+ALT+S) Build,Execution,Deployment -> Build Tools -> Gradle 5) Gradle JVM 변경 6) Project bytecode version 변경 개발중/Spring 2022. 12. 4. 이전 1 ··· 7 8 9 10 11 12 13 ··· 53 다음