Spring @Component와 @Controller의 차이 쓸데없이 느껴지던 MVC 계층도, 그냥 되는 거지 싶던 어노테이션도 셀 수 없이 많은 선배 개발자들의 피눈물과 절망, 숨쉬는 내뱉던 그들의 욕지거리와 쌓여가는 재떨이 속 담배꽁초들, 그럼에도 불구하고 끊임 없이 더 나은 정답을 탐구하던 선구자들이 가져온 봄(Spring)바람이라는 것을. 이 어노테이션을 선언해주는 것만으로도 해당 클래스를 스프링 빈(bean) 객체로 사용할 수 있다. Spri... spring mvcSpringSpring Basic#8 Bean Scope 2. Prototype scope Container 생성 시점에 초기화 method가 실행되고 bean을 여러번 조회해도 같은 instance를 참조한다. 또한 container가 종료될 때 bean의 종료 method가 실행된다. 조회할 때 bean이 생성되기 때문에 각각 다른 instance가 생성된다. 또한 생성+DI까지만 관여하고 이후로는 관리하지 않기 때문에 container가 종료... SpringSpring [EC-Spring] 3주차-DI, IoC, POJO DI [Dependency Injection] (의존성 주입) IoC [Inversion of Controll] (제어의 역전) POJO [Plain Old Java Object] (오래된 방식의 단순 자바 객체) IoC는 스프링 프레임워크의 심장부 IoC 컨테이너는 POJO를 구성하고 관리 스프링 프레임워크의 가장 중요한 의의는 POJO로 자바 애플리케에션을 개발하는 것 스프링의 주요 기능... SpringJavaJava [스프링 기본] 예제 만들기(2) 🤗 인프런 [스프링 핵심원리-기본편]을 듣고 기록하는 글입니다 진행과정 spring starter 팩, spring starter tester 팩 이 두 기본 라이브러리만 사용했음. jpa같은것도 안쓰고, interface써서 객체지향적으로 구조짜는것에 중점둬서 진행함. memberRepository, MemoryMemberRepository를 만들어서 사용해봄. interface하고 구현체... Spring백엔드Spring 심화반 - 3주차 - 2 2022년 4월 16일(토) [스파르타코딩클럽] Spring 심화반 - 3주차 - 2 ◎ Mockito mock 을 사용한 단위 테스트 Mockito framework: Mock 객체를 쉽게 만들 수 있는 방법 제공 예시 ◎ 스프링 부트를 이용한 통합 테스트 통합 테스트 : 두 개 이상의 모듈이 연결된 상태를 테스트, 모듈 간의 연결에서 발생하는 에러 검증 가능 설계 "@SpringBootT... SpringSpring JPA중복컬럼 에러 해당 entity의 ID로 참조한 컬럼으로 또 다른 entity를 조인해야 하는 상황이 발생했다. 에러는 @JoinColumn Annotation에 insertable=false, updatable=false값을 추가해 주는것으로 마무리 되었다. 밑의 코드를 참고해 보자... SpringJPAJPA Spring Boot에서 DB 연결하기 pom.xml에 jdbc나 H2같은 DB에 대한 의존성을 주입할 경우 스프링 부트는 자동으로 DB에 연결하려고 시도한다. 그러나 만약 DB값을 입력하지 않아서 연결을 할 수 없는 경우 위와 같은 메세지를 볼 수 있다. 해결 방법으로는 1. application.properties나 application.yml에 DB값을 입력 2. Cofiguration 생성 3. DB 사용 안한다고 명시... dbSpringSpring [Spring] JPA, 연관관계 편의 메서드 🤔 연관관계 편의 메서드: 양방향 연관관계를 한 번에 설정하는 편리한 메서드 엔티티 A와 B가 서로 양방향 연관관계인데, 어디에 연관관계 편의 메서드를 두는 게 좋은가? 3가지 선택지가 있습니다. 엔티티 A에 둔다. 엔티티 B에 둔다. 엔티티 A,B에 둘 다 둔다. 둘 다 두는 것은 혼란을 가중하기 때문에 제외하고, A, B 중 하나를 선택해서 사용하는 것이 좋다. 그러면 여기서 A, B 중에 ... SpringJPAJPA [Spring Batch + Spring Scheduler + MongoDb]를 사용한 간단한 설명 및 예제 Spring boot 버전 : 2.6.6 Open API에서 받을 데이터를 바인딩할 도메인 객체 이 게시물에서는 WebClient를 사용하였지만 한정된 데이터를 처리하는 배치 작업 특성 상 Non-Blocking 방식인 템플릿을 사용하는 것이 좋을 것 같습니다. Spring Batch Spring Batch는 이러한 Batch 기능을 구현할 때 사용하는 오픈소스 프레임워크 Spring Bac... JavaSpringspring batchSpring SchedulermongodbJava Spring Boot 프로젝트 Nginx 무중단 배포 스크립트 단일의 aws ec2 인스턴스에서 무중단 배포를 해야 하는 상황이 드디어 온것이다. 시행착오를 거치면서 완성한 배포 스크립트를 공유한다. 프로젝트는 spring boot + gradle 기반의 프로젝트이고 nginx 서버를 사용하였다. 어플리케이션 사이드에서 포트 프로파일 정보와 헬스 체크에 관련한 컨트롤러를 생성하고 그 정보를 토대로 배포할때 참고한다. 현재 구동중인 프로파일 응답 컨트롤러... NginxSpringbootSpringNginx 의존관계 주입과 검색 의존관계 주입은 구체적인 의존 오브젝트(실제 사용 대상인 오브젝트)와 그것을 사용할 주체, 보통 클라이언트라고 부르는 오브젝트를 런타임 시에 연결해주는 작업을 말한다. 의존관계 주입은 다음과 같은 조건을 만족해야 한다. 런타임 시점의 의존관계를 결정하는 제 3의 존재는 두 오브젝트 사이의 의존관계 주입을 주도하며 동시에 IoC 방식으로 오브젝트의 생성과 초기화, 제공 등의 작업을 수행하는 컨... 토비의스프링SpringSpring Java와 예외 처리 Exception : Checked 예외 RuntimeException : Unchecked 예외 Checked 예외를 선언하면 throws 예외를 필수로 선언해야 하지만 컴파일 타임에 오류를 잡아 주기 때문에 안전하다는 장점이 있다. 하지만 실무에서는 Checked 예외가 발생하면 받아서 unchecked 예외로 변환한 뒤 던져준다. 실무에서는 어떠한 이유들로 Checked 예외보다 Unc... WILSpringJavaJava [Spring] MVC 1편 - 02. 서블릿 HTTP 요청 로그로 확인하기 다음설정을 추가하면 서버가 받은 HTTP 요청 메세지를 확인 할 수 있다. 서블릿 컨테이너 동작 방식 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. HTTP 요청 메시지 헤더 조회 form 파라미터 형식 조회 HttpServletRequest, HttpServletResponse 객체들은 HT... 서블릿SpringMVCMVC Spring Template Engine Spring Template Engine은 view를 만드는데 사용합니다. Spring Boot가 자동적으로 인식을 해서 추가하며 사용자 정의 Template Engine을 사용하려면 직접 다 추가해줘야 합니다. 대표적으로 Spring이 자동적으로 지원하는 템플릿은 Thymeleaf Mustache Groovy 등이 있습니다. Spring이 등록하는 Bean Name을 보는법은 아래 코드와 ... Spring bootspring mvcSpringSpring #4 - Board 테이블, View 컨트롤러 Board.java BoardRepository.java BoardSaveDto.java BoardEditDto.java BoardPostingService.java BoardPostingController.java Board 테이블의 로직을 정리해 놓은 포스팅이며, 기본적인 세팅은 User 테이블의 로직과 동일합니다. Board.java 마찬가지로 Setter는 없으며, 게시판의 기본적인 ... SpringbootSpringJavaJava Bean lifecycle 컨테이너가 관리하는 Bean의 라이프사이클은 객체생성 - 의존설정 - 초기화 - 소멸 스프링 컨테이너가 초기화 할 때, 빈 객체를 설정 정보에 따라 생성하고, 의존 관계를 설정합니다. 의존 설정이 완료되면, 빈 객체가 지정한 메소드를 호출해 초기화합니다. 컨테이너가 종료될 시 빈 객체가 지정한 메소드를 호출해 빈 객체의 소멸을 처리합니다. 빈 객체는 스프링의 InitializingBean, ... SpringSpring 22.04.13 ~ 22.04.14 WIL JDBC와 Transaction 만약 쿼리가 나갈 때마다 자동으로 커밋되어버리면(만약 두번째 줄에서 SQLException이 발생한다면) ‘me’의 돈은 빠져나갔지만 ‘you’는 돈을 받지 못한 상태가 되어버린다.(큰일난다!) 이렇듯 한 비즈니스 로직이 동작할 때는 하나의 작업처럼 동작해야 하고, 하나의 동작을 안전하게 처리할 수 있도록 도와주는 것이 Transaction의 역할이다. 원자성(Atomicity) : 트랜잭션... WILSpringSpring [TIL] 의존관계 자동 주입 생성자 주입 생성자를 통해서 의존 관계를 주입하는 방법 생성자 호출 시점에 딱 한 번만 호출되는 것이 보장된다. 불편, 필수 의존관계에 사용 수정자 주입(setter 주입) setter를 통해서 의존관계를 주입하는 방법 선택, 변경 가능성이 있는 의존관계에 사용 필드 주입 필드에 바로 주입 외부에서 변경이 불가능하기에 테스트가 힘들다. 일반 메서드 주입 일반 메서드를 통해서 주입 한 번에 여... 스프링 기본SpringJavaTILJava [Spring] 로그인 기능구현 회원가입을 했으면 로그인을 해봐야 한다. 로그인 기능 구현을 해보자. 로그인을 하기위해 사용자의 아이디와 비밀번호를 조회해야 한다. 회원가입 페이지를 만들어 준다. 아이디 또는 이메일로 하고 text 타입으로 input태그를 만든다. 비밀번호는 password 타입으로 만든다. submit 버튼을 만들고 action 속성으로 Controller 에 form을 보낸다. Controller ->... SpringSpring 사이드프로젝트 정리1 (멀티 모듈 설정, gradle) 처음에 프로젝트 진행시 모듈화를 진행하지 않았습니다. 추후에 진행하게되었는데요. 아무래도 혼자서 모두 진행하다보니 굳이 기능별 모듈화를 나눠서 진행할 필요성을 느끼지 못해서 그런것 같습니다. 하지만 기능별 모듈화를 진행하게되면 관리적인 측면이나 개발적인 측면등에서 장점이 많다는 것을 알게 되었으며, 추후에 추가적인 기능들을 생각하여서 모듈화를 지금이라도 진행하게 되었습니다. 모듈화 후 디렉토... Springboot사이드프로젝트SpringJavaJava [Spring] @RequiredArgsConstructor 어노테이션을 사용한 "생성자 주입" 의존성주입의 종류로는 Constructor(생성자),Setter,Field 타입이 있다. Constructor(생성자) Setter 3.Field @RequiredArgsConstructor 어노테이션을 사용한 생성자 주입 방법 생성자주입의 단점은 위의 Constructor(생성자) 코드처럼 생성자를 만들기 번거롭다는 것이다. 하지만 이를 보완하기위해 롬복을 사용하여 간단한 방법으로 생성자 ... SpringSpring 스프링의 삼각형 이해하기! IoC(Inversion of Control, 제어의 역전)와 DI(Dependency Injection, 의존성 주입)는 하나로 묶여 표현했지만 다른 의미를 가지고 있다. 반대로 객체가 스프링 컨테이너에게 관리되고 있는 빈이라면 @Autowired 어노테이션을 이용하여 객체를 주입받을 수 있다. 생성자와 속성을 이용한 의존성 주입은 간단하게 코드로만 살펴보고 XML을 이용한 의존성 주입 방... SpringSpring 2022/03/21 영속성 컨텍스트 알아보기 Persistence(영속화) 사라지지 않고 지속적으로 접근할 수 있다는 의미이다 보통 메모리에 존재하는 데이터는 서비스가 종료되면 사라진다. -> 이를 해결하기 위해서는 파일로저장 OR DB에 저장하는 것이다. 실제로 영속성 컨텍스트의 가장 주체적인 클래스는 EntityManager라는 빈이다. 현재 프로젝트에 H2 DB-> MySQL연동하기 이렇게 나는 MySQLWorkbench를 이용해... JavaJPASpringJPA [Spring] H2 Console을 이용한 DB Data CRUD model - 파일 명 : Book.java JPA에서 제공하는 Annotation인 @Entity 사용하기 자동으로 import javax.persistence.Entity; 생성된다. 🥪 Entity Annotation? : 해당 class(Book)를 JPA가 관리하는 Entity(객체)로 인식하게 한다. 별도의 Table annotation(@Table)을 지정하지 않으면, 해당 클래... SpringSpring [Spring] Postman 사용 - POST API key값을 받아와야 POST방식을 사용할 수 있다. + 클릭으로 collection 추가 후 ,Request name : Submit an order, save 클릭 마찬가지로 Request name : API Auth 도 생성 API Auth에서 GET 말고 POST로 지정 {{baseUrl}}/api-clients 입력 후, Body에서 raw 클릭 text대신 JSON 클릭 Bo... SpringSpring 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (3) 개발 환경 - Java 11, IntelliJ 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 아직 데이터 저장소가 선정되지 않아서, ... SpringSpring [Spring&AWS][5-2] 구글 로그인 연동하기 ✅ User 클래스 User 클래스는 사용자 정보를 담당할 도메인이다. domain/user/User.java ✅ Role domain/user/Role.java domain/user/Repository.java 소셜 로그인 등 클라이언트 입장에서 소셜 기능 구현 시 필요한 의존성 OAuth 라이브러리를 이용한 소셜 로그인 설정 코드를 작성해보자. OAuth2 로그인 기능에 대한 여러 설정의... Springspring securityTILOAuth2.0OAuth2.0 Annotation Processor Lombok을 처음 써봤는데 어노테이션 getter setter를 사용했는데 IDE에서는 인식되서 잘됬는데 컴파일하는 도중 cannot find symbol 에러가 발생했습니다. 구글링하다가 겨우 찾아냈는데 그것은 바로 이거를 gradle 에 추가해 주면 문제는 깔끔히 해결됩니다. 자 그럼 해결되서 끝이 아니라 왜 해결됬는지 알아봐야겠죠? 자바 컴파일러 플러그인의 일종으로, 어노테이션에 대한... SpringSpring [Spring&AWS][5-4] 네이버 로그인 추가해보기 ✅ application-oauth.properties 네이버에서는 스프링 시큐리티를 공식 지원하지 않기 때문에 그동안 CommonOAuth2Provider에서 해주던 값들도 전부 수동으로 입력해야 한다. 스프링 시큐리티에서는 하위 필드를 명시할 수 없는데, 네이버 응답값 최상위 필드는 resultCode, message, response이다. 2. 스프링 시큐리티 설정 등록 네이버 로그인 ... 네이버 로그인TILSpringSpring 이전 기사 보기
@Component와 @Controller의 차이 쓸데없이 느껴지던 MVC 계층도, 그냥 되는 거지 싶던 어노테이션도 셀 수 없이 많은 선배 개발자들의 피눈물과 절망, 숨쉬는 내뱉던 그들의 욕지거리와 쌓여가는 재떨이 속 담배꽁초들, 그럼에도 불구하고 끊임 없이 더 나은 정답을 탐구하던 선구자들이 가져온 봄(Spring)바람이라는 것을. 이 어노테이션을 선언해주는 것만으로도 해당 클래스를 스프링 빈(bean) 객체로 사용할 수 있다. Spri... spring mvcSpringSpring Basic#8 Bean Scope 2. Prototype scope Container 생성 시점에 초기화 method가 실행되고 bean을 여러번 조회해도 같은 instance를 참조한다. 또한 container가 종료될 때 bean의 종료 method가 실행된다. 조회할 때 bean이 생성되기 때문에 각각 다른 instance가 생성된다. 또한 생성+DI까지만 관여하고 이후로는 관리하지 않기 때문에 container가 종료... SpringSpring [EC-Spring] 3주차-DI, IoC, POJO DI [Dependency Injection] (의존성 주입) IoC [Inversion of Controll] (제어의 역전) POJO [Plain Old Java Object] (오래된 방식의 단순 자바 객체) IoC는 스프링 프레임워크의 심장부 IoC 컨테이너는 POJO를 구성하고 관리 스프링 프레임워크의 가장 중요한 의의는 POJO로 자바 애플리케에션을 개발하는 것 스프링의 주요 기능... SpringJavaJava [스프링 기본] 예제 만들기(2) 🤗 인프런 [스프링 핵심원리-기본편]을 듣고 기록하는 글입니다 진행과정 spring starter 팩, spring starter tester 팩 이 두 기본 라이브러리만 사용했음. jpa같은것도 안쓰고, interface써서 객체지향적으로 구조짜는것에 중점둬서 진행함. memberRepository, MemoryMemberRepository를 만들어서 사용해봄. interface하고 구현체... Spring백엔드Spring 심화반 - 3주차 - 2 2022년 4월 16일(토) [스파르타코딩클럽] Spring 심화반 - 3주차 - 2 ◎ Mockito mock 을 사용한 단위 테스트 Mockito framework: Mock 객체를 쉽게 만들 수 있는 방법 제공 예시 ◎ 스프링 부트를 이용한 통합 테스트 통합 테스트 : 두 개 이상의 모듈이 연결된 상태를 테스트, 모듈 간의 연결에서 발생하는 에러 검증 가능 설계 "@SpringBootT... SpringSpring JPA중복컬럼 에러 해당 entity의 ID로 참조한 컬럼으로 또 다른 entity를 조인해야 하는 상황이 발생했다. 에러는 @JoinColumn Annotation에 insertable=false, updatable=false값을 추가해 주는것으로 마무리 되었다. 밑의 코드를 참고해 보자... SpringJPAJPA Spring Boot에서 DB 연결하기 pom.xml에 jdbc나 H2같은 DB에 대한 의존성을 주입할 경우 스프링 부트는 자동으로 DB에 연결하려고 시도한다. 그러나 만약 DB값을 입력하지 않아서 연결을 할 수 없는 경우 위와 같은 메세지를 볼 수 있다. 해결 방법으로는 1. application.properties나 application.yml에 DB값을 입력 2. Cofiguration 생성 3. DB 사용 안한다고 명시... dbSpringSpring [Spring] JPA, 연관관계 편의 메서드 🤔 연관관계 편의 메서드: 양방향 연관관계를 한 번에 설정하는 편리한 메서드 엔티티 A와 B가 서로 양방향 연관관계인데, 어디에 연관관계 편의 메서드를 두는 게 좋은가? 3가지 선택지가 있습니다. 엔티티 A에 둔다. 엔티티 B에 둔다. 엔티티 A,B에 둘 다 둔다. 둘 다 두는 것은 혼란을 가중하기 때문에 제외하고, A, B 중 하나를 선택해서 사용하는 것이 좋다. 그러면 여기서 A, B 중에 ... SpringJPAJPA [Spring Batch + Spring Scheduler + MongoDb]를 사용한 간단한 설명 및 예제 Spring boot 버전 : 2.6.6 Open API에서 받을 데이터를 바인딩할 도메인 객체 이 게시물에서는 WebClient를 사용하였지만 한정된 데이터를 처리하는 배치 작업 특성 상 Non-Blocking 방식인 템플릿을 사용하는 것이 좋을 것 같습니다. Spring Batch Spring Batch는 이러한 Batch 기능을 구현할 때 사용하는 오픈소스 프레임워크 Spring Bac... JavaSpringspring batchSpring SchedulermongodbJava Spring Boot 프로젝트 Nginx 무중단 배포 스크립트 단일의 aws ec2 인스턴스에서 무중단 배포를 해야 하는 상황이 드디어 온것이다. 시행착오를 거치면서 완성한 배포 스크립트를 공유한다. 프로젝트는 spring boot + gradle 기반의 프로젝트이고 nginx 서버를 사용하였다. 어플리케이션 사이드에서 포트 프로파일 정보와 헬스 체크에 관련한 컨트롤러를 생성하고 그 정보를 토대로 배포할때 참고한다. 현재 구동중인 프로파일 응답 컨트롤러... NginxSpringbootSpringNginx 의존관계 주입과 검색 의존관계 주입은 구체적인 의존 오브젝트(실제 사용 대상인 오브젝트)와 그것을 사용할 주체, 보통 클라이언트라고 부르는 오브젝트를 런타임 시에 연결해주는 작업을 말한다. 의존관계 주입은 다음과 같은 조건을 만족해야 한다. 런타임 시점의 의존관계를 결정하는 제 3의 존재는 두 오브젝트 사이의 의존관계 주입을 주도하며 동시에 IoC 방식으로 오브젝트의 생성과 초기화, 제공 등의 작업을 수행하는 컨... 토비의스프링SpringSpring Java와 예외 처리 Exception : Checked 예외 RuntimeException : Unchecked 예외 Checked 예외를 선언하면 throws 예외를 필수로 선언해야 하지만 컴파일 타임에 오류를 잡아 주기 때문에 안전하다는 장점이 있다. 하지만 실무에서는 Checked 예외가 발생하면 받아서 unchecked 예외로 변환한 뒤 던져준다. 실무에서는 어떠한 이유들로 Checked 예외보다 Unc... WILSpringJavaJava [Spring] MVC 1편 - 02. 서블릿 HTTP 요청 로그로 확인하기 다음설정을 추가하면 서버가 받은 HTTP 요청 메세지를 확인 할 수 있다. 서블릿 컨테이너 동작 방식 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. HTTP 요청 메시지 헤더 조회 form 파라미터 형식 조회 HttpServletRequest, HttpServletResponse 객체들은 HT... 서블릿SpringMVCMVC Spring Template Engine Spring Template Engine은 view를 만드는데 사용합니다. Spring Boot가 자동적으로 인식을 해서 추가하며 사용자 정의 Template Engine을 사용하려면 직접 다 추가해줘야 합니다. 대표적으로 Spring이 자동적으로 지원하는 템플릿은 Thymeleaf Mustache Groovy 등이 있습니다. Spring이 등록하는 Bean Name을 보는법은 아래 코드와 ... Spring bootspring mvcSpringSpring #4 - Board 테이블, View 컨트롤러 Board.java BoardRepository.java BoardSaveDto.java BoardEditDto.java BoardPostingService.java BoardPostingController.java Board 테이블의 로직을 정리해 놓은 포스팅이며, 기본적인 세팅은 User 테이블의 로직과 동일합니다. Board.java 마찬가지로 Setter는 없으며, 게시판의 기본적인 ... SpringbootSpringJavaJava Bean lifecycle 컨테이너가 관리하는 Bean의 라이프사이클은 객체생성 - 의존설정 - 초기화 - 소멸 스프링 컨테이너가 초기화 할 때, 빈 객체를 설정 정보에 따라 생성하고, 의존 관계를 설정합니다. 의존 설정이 완료되면, 빈 객체가 지정한 메소드를 호출해 초기화합니다. 컨테이너가 종료될 시 빈 객체가 지정한 메소드를 호출해 빈 객체의 소멸을 처리합니다. 빈 객체는 스프링의 InitializingBean, ... SpringSpring 22.04.13 ~ 22.04.14 WIL JDBC와 Transaction 만약 쿼리가 나갈 때마다 자동으로 커밋되어버리면(만약 두번째 줄에서 SQLException이 발생한다면) ‘me’의 돈은 빠져나갔지만 ‘you’는 돈을 받지 못한 상태가 되어버린다.(큰일난다!) 이렇듯 한 비즈니스 로직이 동작할 때는 하나의 작업처럼 동작해야 하고, 하나의 동작을 안전하게 처리할 수 있도록 도와주는 것이 Transaction의 역할이다. 원자성(Atomicity) : 트랜잭션... WILSpringSpring [TIL] 의존관계 자동 주입 생성자 주입 생성자를 통해서 의존 관계를 주입하는 방법 생성자 호출 시점에 딱 한 번만 호출되는 것이 보장된다. 불편, 필수 의존관계에 사용 수정자 주입(setter 주입) setter를 통해서 의존관계를 주입하는 방법 선택, 변경 가능성이 있는 의존관계에 사용 필드 주입 필드에 바로 주입 외부에서 변경이 불가능하기에 테스트가 힘들다. 일반 메서드 주입 일반 메서드를 통해서 주입 한 번에 여... 스프링 기본SpringJavaTILJava [Spring] 로그인 기능구현 회원가입을 했으면 로그인을 해봐야 한다. 로그인 기능 구현을 해보자. 로그인을 하기위해 사용자의 아이디와 비밀번호를 조회해야 한다. 회원가입 페이지를 만들어 준다. 아이디 또는 이메일로 하고 text 타입으로 input태그를 만든다. 비밀번호는 password 타입으로 만든다. submit 버튼을 만들고 action 속성으로 Controller 에 form을 보낸다. Controller ->... SpringSpring 사이드프로젝트 정리1 (멀티 모듈 설정, gradle) 처음에 프로젝트 진행시 모듈화를 진행하지 않았습니다. 추후에 진행하게되었는데요. 아무래도 혼자서 모두 진행하다보니 굳이 기능별 모듈화를 나눠서 진행할 필요성을 느끼지 못해서 그런것 같습니다. 하지만 기능별 모듈화를 진행하게되면 관리적인 측면이나 개발적인 측면등에서 장점이 많다는 것을 알게 되었으며, 추후에 추가적인 기능들을 생각하여서 모듈화를 지금이라도 진행하게 되었습니다. 모듈화 후 디렉토... Springboot사이드프로젝트SpringJavaJava [Spring] @RequiredArgsConstructor 어노테이션을 사용한 "생성자 주입" 의존성주입의 종류로는 Constructor(생성자),Setter,Field 타입이 있다. Constructor(생성자) Setter 3.Field @RequiredArgsConstructor 어노테이션을 사용한 생성자 주입 방법 생성자주입의 단점은 위의 Constructor(생성자) 코드처럼 생성자를 만들기 번거롭다는 것이다. 하지만 이를 보완하기위해 롬복을 사용하여 간단한 방법으로 생성자 ... SpringSpring 스프링의 삼각형 이해하기! IoC(Inversion of Control, 제어의 역전)와 DI(Dependency Injection, 의존성 주입)는 하나로 묶여 표현했지만 다른 의미를 가지고 있다. 반대로 객체가 스프링 컨테이너에게 관리되고 있는 빈이라면 @Autowired 어노테이션을 이용하여 객체를 주입받을 수 있다. 생성자와 속성을 이용한 의존성 주입은 간단하게 코드로만 살펴보고 XML을 이용한 의존성 주입 방... SpringSpring 2022/03/21 영속성 컨텍스트 알아보기 Persistence(영속화) 사라지지 않고 지속적으로 접근할 수 있다는 의미이다 보통 메모리에 존재하는 데이터는 서비스가 종료되면 사라진다. -> 이를 해결하기 위해서는 파일로저장 OR DB에 저장하는 것이다. 실제로 영속성 컨텍스트의 가장 주체적인 클래스는 EntityManager라는 빈이다. 현재 프로젝트에 H2 DB-> MySQL연동하기 이렇게 나는 MySQLWorkbench를 이용해... JavaJPASpringJPA [Spring] H2 Console을 이용한 DB Data CRUD model - 파일 명 : Book.java JPA에서 제공하는 Annotation인 @Entity 사용하기 자동으로 import javax.persistence.Entity; 생성된다. 🥪 Entity Annotation? : 해당 class(Book)를 JPA가 관리하는 Entity(객체)로 인식하게 한다. 별도의 Table annotation(@Table)을 지정하지 않으면, 해당 클래... SpringSpring [Spring] Postman 사용 - POST API key값을 받아와야 POST방식을 사용할 수 있다. + 클릭으로 collection 추가 후 ,Request name : Submit an order, save 클릭 마찬가지로 Request name : API Auth 도 생성 API Auth에서 GET 말고 POST로 지정 {{baseUrl}}/api-clients 입력 후, Body에서 raw 클릭 text대신 JSON 클릭 Bo... SpringSpring 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (3) 개발 환경 - Java 11, IntelliJ 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 아직 데이터 저장소가 선정되지 않아서, ... SpringSpring [Spring&AWS][5-2] 구글 로그인 연동하기 ✅ User 클래스 User 클래스는 사용자 정보를 담당할 도메인이다. domain/user/User.java ✅ Role domain/user/Role.java domain/user/Repository.java 소셜 로그인 등 클라이언트 입장에서 소셜 기능 구현 시 필요한 의존성 OAuth 라이브러리를 이용한 소셜 로그인 설정 코드를 작성해보자. OAuth2 로그인 기능에 대한 여러 설정의... Springspring securityTILOAuth2.0OAuth2.0 Annotation Processor Lombok을 처음 써봤는데 어노테이션 getter setter를 사용했는데 IDE에서는 인식되서 잘됬는데 컴파일하는 도중 cannot find symbol 에러가 발생했습니다. 구글링하다가 겨우 찾아냈는데 그것은 바로 이거를 gradle 에 추가해 주면 문제는 깔끔히 해결됩니다. 자 그럼 해결되서 끝이 아니라 왜 해결됬는지 알아봐야겠죠? 자바 컴파일러 플러그인의 일종으로, 어노테이션에 대한... SpringSpring [Spring&AWS][5-4] 네이버 로그인 추가해보기 ✅ application-oauth.properties 네이버에서는 스프링 시큐리티를 공식 지원하지 않기 때문에 그동안 CommonOAuth2Provider에서 해주던 값들도 전부 수동으로 입력해야 한다. 스프링 시큐리티에서는 하위 필드를 명시할 수 없는데, 네이버 응답값 최상위 필드는 resultCode, message, response이다. 2. 스프링 시큐리티 설정 등록 네이버 로그인 ... 네이버 로그인TILSpringSpring 이전 기사 보기