스프링부트 [Docker] Spring 프로젝트를 Docker를 이용해서 배포해봅시다 위의 커맨드는, Docker를 올릴 때 jdk11 버전을 이용해서 올리겠다라고 선언하는 커맨드입니다. 위의 커맨드는, 프로젝트의 jar 파일 위치를 참조하여 jar 파일을 가져와서 컨테이너의 루트 디렉토리에 app.jar의 이름으로 복사하는 커맨드입니다. 위의 커맨드는, 도커파일이 도커엔진을 통해서 컨테이너로 올라갈 때, 도커 컨테이너의 시스템 진입점이 어디인지를 선언하는 커맨드입니다. 위의... 스프링부트devopsdockerdevops JPA의 연관관계 맵핑 (feat. Repeated column in mapping for entity 에러) 우리가 보통 JPA를 이용해 연관관계를 맵핑할 때는 @ManyToOne(다대일 관계인 경우)과 @JoinColumn 어노테이션을 사용한다. 예를 들어, User 테이블과 Product 테이블이 있다고 가정하자. 그리고 다른 테이블에서 두 테이블을 모두와 다대일 관계를 맺는 경우 다음과 같이 작성할 수 있다. @ManyToOne을 통해 해당 테이블과 다대일 관계임을, @JoinColumn을 통... JPA스프링부트JPA 스프링부트 - 스프링시큐리티 세션방식 스프링부트에서 Redis를 연동하는 연습용 프로젝트를 만들어 보겠습니다! 깃헙에 있는 정리본을 참고해주세요! 스프링시큐리티, h2 database, 타임리프 의존성을 추가해줬습니다. 회원 정보를 저장할 DB로 간단한 h2를 사용해줍니다. (대신 서버가 종료되면 DB도 날라감!) 스프링 시큐리티 의존성을 추가하면, WebSecurityConfigurerAdapter 클래스가 실행됨. 여기서는 ... Springboot로그인SpringSecurity스프링부트쿠키스프링시큐리티세션SpringSecurity [JPA] @OneToMany 연관관계 매핑 시작 @OneToMany 매핑, 즉 일대다 관계를 스프링 부트에서 어떤 식으로 적용시키면 좋을지에 대해 알아본다. 일대다(1:N) 관계 일대다 관계란, 한 쪽의 엔티티가 다른 쪽의 엔티티의 객체 여러개를 가질 수 있을 때를 의미하는 관계이다. 예를 들어, 하나의 팀은 여러명의 선수를 가질 수 있다. 이런 경우를 팀이 선수와 일대다 관계를 맺고 있다고 말할 수 있다. 이를 그림으로 나타내면 다... JPA스프링부트JPA [DevOps] 스프링 서버 모놀리식 배포하기 - 환경구축(2) 본 실습에서는 AWS가 제공하는 RDS, EC2 기능을 사용할 예정입니다. 우선 AWS RDS 서비스를 이용하여 MySQL 데이터베이스를 생성하겠습니다. RDS 서비스 페이지로 접근을 하셨다면, 데이터베이스 생성 버튼을 눌러줍니다. 그리고, 아래의 방법대로 데이터베이스 환경 구축을 해주면됩니다. MySQL 데이터베이스 엔진을 선택합니다. DB 인스턴스 식별자 에는 RDS Instance 요약... 모놀리식스프링부트모놀리식 spring boot + vue.js 환경 구성하기 그러다 기회가 생겨 웹 개발을 잠시하게 되었는데 spring boot안에 vue.js를 함께 쓰는 아키텍처로 구성이 된 프로젝트였다. 프리랜서에 도움이 받아 개발을 진행하게 되었는데 그때 당시에는 너무 모르는게 많아 원래 그런가보다 하고 일을 진행하다가 프로젝트가 마무리되고 나서 spring boot에 vue가 들어가면 router를 사용 할 수 없는건가? 하는 의구심이 들어 찾아보았고 답을... vuejs스프링부트vuejs Spring Boot) Swagger UI Spring으로 Rest API를 개발한 이후 클라이언트 개발자에게 매번 문서로 정리하여 공유할 때, API에 대한 수정이 발생할 때마다 문서도 수정하여 다시 공유해야 하는 점이 번거롭고, 사실 문서 정리부터 번거롭다. 이때 Swagger를 사용하게 되면 API 문서 자동화로 따로 문서로 정리할 필요도 없을 뿐만 아니라 UI에서 직접 API를 테스트해볼 수 있기 때문에 편리하다. 즉, 서버로... Swagger스프링부트Swagger [DevOps] 스프링 서버 모놀리식 배포 - DTO의 사용 이유, Controller, Service layer 작성 이번 포스트에서는 Controller, Service layer를 작성할 예정입니다. 간단한 Controller, Service layer를 작성할 예정이기 때문에 따로 테스트 코드를 작성하지는 않겠습니다. 일단 DTO를 구성하기 이전에, 왜 DTO라는 객체를 사용해야하는지 부터 알아봅시다. 저희는 흔한 말로, 서버 어플리케이션을 구성할 때 엔티티를 직접 반환해서는 안되고, 반드시 DTO를 ... DTO모놀리식스프링부트DTO [SpringBoot] error: variable name not initialized in the default constructor private final String name; 스프링 부트와 AWS로 혼자 구현하는 웹 서비스라는 책을 보며 73p 공부하고 있던 중.. 롬복 dependency 추가하고 코드 돌리니까 error: variable name not initialized in the default constructor private final String name; 에러가 났다. 분명 롬복으로 @Getter로 get메소드, @RequiredArgsConst... 스프링부트스프링 부트와 AWS로 혼자 구현하는 웹 서비스SpringbootSpringboot [springboot]JPA의 LazyInitializationException guestBookRepository를 통해 Entity "GuestBook"을 찾은 뒤 해당 객체에 접근하려고 할 시 LazyInitializationException 발생 JPA에서 관리하는 세션이 종료된 후( 영속성 컨텍스트가 종료된 후 ) 관계가 설정된 엔티티를 참조하려고 할때 발생한다. @Transactional의 성질 ▶ 원자성(Atomicity) ▶ 일관성(Consistency) ... 스프링부트스프링부트 Could not find com.h2datebase:h2 Execution failed for task ':compileJava'. Could not resolve all files for configuration ':compileClasspath'. Could not find com.h2datebase:h2:. Required by: project : 책보고 차근차근 따라했는데 오류 났다. 구글링해봐도 해결책을 못찾아서 오류내용을 눈씻고 자세히 ... JPASpringbootCLASSPATHIntelliJ스프링부트인텔리제이CLASSPATH org.springframework.web.client.RestClientException: Error while extracting response for type PostsApiControllerTest Posts_수정된다() Run 돌리니까 위의 에러가 났다. 구글링의 해결책으로는 내 오류가 해결되지 않았다. 책 저자가 관련 메소드에서 Post를 Put으로 오타 실수가 있었다기에 혹시나하고 다음과 같이 수정하니 에러 해결. ✔️해결 전 ✔️해결 후 📋참고자료... PostsApiControllerTestRestClientExceptionSpringboot스프링부트스프링부트와 AWS로 혼자 구현하는 웹 서비스PostsApiControllerTest 스프링의 특징 스프링은 IOC 컨테이너를 가진다. 스프링은 DI(DependencyInjection)를 지원한다. 스프링은 많은 필터를 가지고있다. 스프링은 많은 어노테이션을 가지고있다. 스프링은 MessageConverter를 가지고있다. 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다. 스프링은 이 문제를 쉽게 해결해준다. 스프링은 사용자가 가지고있는 수많은 객체... 스프링부트스프링부트 Spring Boot 의 자동설정에 대한 이해 에서 스프링 부트의 소개글로 다음과 같은 글이 있다 부트 프로젝트를 생성할 때, spring-boot-starter-web 의존성만 추가하고 프로젝트를 생성하면 아무런 작업을 하지 않아도 어플리케이션을 실행하면 8080포트위에서 톰캣서버가 돌아가는 것을 확인할 수 있다. @EnableAutoConfiguration 에서 스프링 부트가 사용할 빈들을 자동으로 등록해주는 역할을 한다. 그렇다면,... 스프링부트의자동설정스프링부트스프링부트 Spring Boot. 객체지향 == 유연하고 변경이 용이하다 , 확장 가능한 설계 다형성 Polymorphism 역할과 구현으로 구분 자동차가 바뀌어도(구현이 바뀌어도), 운전자에게 영향을 미치지 않는다 따라서 자동차 세계를 무한히 확장할 수 있다! 즉, 클라이언트에 영향을 미치지 않는 선에서 새로운 기능을 적용시킬 수 있다 객체를 설계할 때 역할과 구현을 명확히 분리하여, 객체 설계 시 역할(인터페이스)을 먼저 부여하고... 객체지향스프링부트Springboot객체자바Springboot [Spring Boot] JPA 필터 정렬 구현 spring-boot 2.6.3 spring-boot-starter-data-jpa querydsl 1.0.10 build.gradle application.yml 구조 테스트 더미 데이터를 자동으로 넣어주는 GeneratorService 생성 필터와 정렬에 사용할 DB 제작 user - 유저 테이블 board - 게시물 테이블(postType로 필터 구현, 작성시간과 조회수로 정렬 구현) ... JPA스프링부트JPA 스프링부트 Kafka 연습 2 - JSON 주고받기 저번에 이어서 kafka 예제를 만들어 보겠습니다. 저번 예제에서는 String형식의 메세지만 주고 받았습니다. 제가 협업프로젝트를 하면서 대부분 프론트엔드와 JSON형식으로 통신했었기에 kafka도 JSON으로 통신해야할 필요성을 느껴서 예제를 만들었습니다. JSON을 주고 받으려면 Value의 Stringserializer부분을 JSON으로 바꿔주어야합니다. 기존 방식처럼 yml에 하려고... 스프링부트채팅Springboot카프카kafkaSpringboot 스프링부트 Redis 연습 1 - get/set 구현 스프링부트에서 Redis를 연동하는 연습용 프로젝트를 만들어 보겠습니다! 깃헙에 있는 정리본을 참고해주세요! Redis 서버를 킨 상태에서 코드를 작성해봅시다! autoConfiguration 덕분에 서버주소:포트번호만 적어줘도 StringRedisTemplate과 redisConnectionFactory는 자동 생성된다 메세지 모델 클래스 보내는사람과 내용을 필드로 가지고 있음. Json ... redis레디스Springboot스프링부트Springboot 스프링 JPA 핵심개념 두번째 1. 영속성(Persistence) 이란 2. ORM(Object Relational Mapping) 이란? 3. 하이버네이트 두번째 시간은 ORM이 낯설어서 용어정리나 기본 개념 정리가 필요할꺼 같았다. 1. 영속성(Persistence) 이란? 1. 정의 영속성 이란 ORM(Object Relational Mapping)에서 사용하는 말로 클래스 객체파일로 맵핑된 메타데이터로 데이터베이스... JPA스프링부트JPA
[Docker] Spring 프로젝트를 Docker를 이용해서 배포해봅시다 위의 커맨드는, Docker를 올릴 때 jdk11 버전을 이용해서 올리겠다라고 선언하는 커맨드입니다. 위의 커맨드는, 프로젝트의 jar 파일 위치를 참조하여 jar 파일을 가져와서 컨테이너의 루트 디렉토리에 app.jar의 이름으로 복사하는 커맨드입니다. 위의 커맨드는, 도커파일이 도커엔진을 통해서 컨테이너로 올라갈 때, 도커 컨테이너의 시스템 진입점이 어디인지를 선언하는 커맨드입니다. 위의... 스프링부트devopsdockerdevops JPA의 연관관계 맵핑 (feat. Repeated column in mapping for entity 에러) 우리가 보통 JPA를 이용해 연관관계를 맵핑할 때는 @ManyToOne(다대일 관계인 경우)과 @JoinColumn 어노테이션을 사용한다. 예를 들어, User 테이블과 Product 테이블이 있다고 가정하자. 그리고 다른 테이블에서 두 테이블을 모두와 다대일 관계를 맺는 경우 다음과 같이 작성할 수 있다. @ManyToOne을 통해 해당 테이블과 다대일 관계임을, @JoinColumn을 통... JPA스프링부트JPA 스프링부트 - 스프링시큐리티 세션방식 스프링부트에서 Redis를 연동하는 연습용 프로젝트를 만들어 보겠습니다! 깃헙에 있는 정리본을 참고해주세요! 스프링시큐리티, h2 database, 타임리프 의존성을 추가해줬습니다. 회원 정보를 저장할 DB로 간단한 h2를 사용해줍니다. (대신 서버가 종료되면 DB도 날라감!) 스프링 시큐리티 의존성을 추가하면, WebSecurityConfigurerAdapter 클래스가 실행됨. 여기서는 ... Springboot로그인SpringSecurity스프링부트쿠키스프링시큐리티세션SpringSecurity [JPA] @OneToMany 연관관계 매핑 시작 @OneToMany 매핑, 즉 일대다 관계를 스프링 부트에서 어떤 식으로 적용시키면 좋을지에 대해 알아본다. 일대다(1:N) 관계 일대다 관계란, 한 쪽의 엔티티가 다른 쪽의 엔티티의 객체 여러개를 가질 수 있을 때를 의미하는 관계이다. 예를 들어, 하나의 팀은 여러명의 선수를 가질 수 있다. 이런 경우를 팀이 선수와 일대다 관계를 맺고 있다고 말할 수 있다. 이를 그림으로 나타내면 다... JPA스프링부트JPA [DevOps] 스프링 서버 모놀리식 배포하기 - 환경구축(2) 본 실습에서는 AWS가 제공하는 RDS, EC2 기능을 사용할 예정입니다. 우선 AWS RDS 서비스를 이용하여 MySQL 데이터베이스를 생성하겠습니다. RDS 서비스 페이지로 접근을 하셨다면, 데이터베이스 생성 버튼을 눌러줍니다. 그리고, 아래의 방법대로 데이터베이스 환경 구축을 해주면됩니다. MySQL 데이터베이스 엔진을 선택합니다. DB 인스턴스 식별자 에는 RDS Instance 요약... 모놀리식스프링부트모놀리식 spring boot + vue.js 환경 구성하기 그러다 기회가 생겨 웹 개발을 잠시하게 되었는데 spring boot안에 vue.js를 함께 쓰는 아키텍처로 구성이 된 프로젝트였다. 프리랜서에 도움이 받아 개발을 진행하게 되었는데 그때 당시에는 너무 모르는게 많아 원래 그런가보다 하고 일을 진행하다가 프로젝트가 마무리되고 나서 spring boot에 vue가 들어가면 router를 사용 할 수 없는건가? 하는 의구심이 들어 찾아보았고 답을... vuejs스프링부트vuejs Spring Boot) Swagger UI Spring으로 Rest API를 개발한 이후 클라이언트 개발자에게 매번 문서로 정리하여 공유할 때, API에 대한 수정이 발생할 때마다 문서도 수정하여 다시 공유해야 하는 점이 번거롭고, 사실 문서 정리부터 번거롭다. 이때 Swagger를 사용하게 되면 API 문서 자동화로 따로 문서로 정리할 필요도 없을 뿐만 아니라 UI에서 직접 API를 테스트해볼 수 있기 때문에 편리하다. 즉, 서버로... Swagger스프링부트Swagger [DevOps] 스프링 서버 모놀리식 배포 - DTO의 사용 이유, Controller, Service layer 작성 이번 포스트에서는 Controller, Service layer를 작성할 예정입니다. 간단한 Controller, Service layer를 작성할 예정이기 때문에 따로 테스트 코드를 작성하지는 않겠습니다. 일단 DTO를 구성하기 이전에, 왜 DTO라는 객체를 사용해야하는지 부터 알아봅시다. 저희는 흔한 말로, 서버 어플리케이션을 구성할 때 엔티티를 직접 반환해서는 안되고, 반드시 DTO를 ... DTO모놀리식스프링부트DTO [SpringBoot] error: variable name not initialized in the default constructor private final String name; 스프링 부트와 AWS로 혼자 구현하는 웹 서비스라는 책을 보며 73p 공부하고 있던 중.. 롬복 dependency 추가하고 코드 돌리니까 error: variable name not initialized in the default constructor private final String name; 에러가 났다. 분명 롬복으로 @Getter로 get메소드, @RequiredArgsConst... 스프링부트스프링 부트와 AWS로 혼자 구현하는 웹 서비스SpringbootSpringboot [springboot]JPA의 LazyInitializationException guestBookRepository를 통해 Entity "GuestBook"을 찾은 뒤 해당 객체에 접근하려고 할 시 LazyInitializationException 발생 JPA에서 관리하는 세션이 종료된 후( 영속성 컨텍스트가 종료된 후 ) 관계가 설정된 엔티티를 참조하려고 할때 발생한다. @Transactional의 성질 ▶ 원자성(Atomicity) ▶ 일관성(Consistency) ... 스프링부트스프링부트 Could not find com.h2datebase:h2 Execution failed for task ':compileJava'. Could not resolve all files for configuration ':compileClasspath'. Could not find com.h2datebase:h2:. Required by: project : 책보고 차근차근 따라했는데 오류 났다. 구글링해봐도 해결책을 못찾아서 오류내용을 눈씻고 자세히 ... JPASpringbootCLASSPATHIntelliJ스프링부트인텔리제이CLASSPATH org.springframework.web.client.RestClientException: Error while extracting response for type PostsApiControllerTest Posts_수정된다() Run 돌리니까 위의 에러가 났다. 구글링의 해결책으로는 내 오류가 해결되지 않았다. 책 저자가 관련 메소드에서 Post를 Put으로 오타 실수가 있었다기에 혹시나하고 다음과 같이 수정하니 에러 해결. ✔️해결 전 ✔️해결 후 📋참고자료... PostsApiControllerTestRestClientExceptionSpringboot스프링부트스프링부트와 AWS로 혼자 구현하는 웹 서비스PostsApiControllerTest 스프링의 특징 스프링은 IOC 컨테이너를 가진다. 스프링은 DI(DependencyInjection)를 지원한다. 스프링은 많은 필터를 가지고있다. 스프링은 많은 어노테이션을 가지고있다. 스프링은 MessageConverter를 가지고있다. 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다. 스프링은 이 문제를 쉽게 해결해준다. 스프링은 사용자가 가지고있는 수많은 객체... 스프링부트스프링부트 Spring Boot 의 자동설정에 대한 이해 에서 스프링 부트의 소개글로 다음과 같은 글이 있다 부트 프로젝트를 생성할 때, spring-boot-starter-web 의존성만 추가하고 프로젝트를 생성하면 아무런 작업을 하지 않아도 어플리케이션을 실행하면 8080포트위에서 톰캣서버가 돌아가는 것을 확인할 수 있다. @EnableAutoConfiguration 에서 스프링 부트가 사용할 빈들을 자동으로 등록해주는 역할을 한다. 그렇다면,... 스프링부트의자동설정스프링부트스프링부트 Spring Boot. 객체지향 == 유연하고 변경이 용이하다 , 확장 가능한 설계 다형성 Polymorphism 역할과 구현으로 구분 자동차가 바뀌어도(구현이 바뀌어도), 운전자에게 영향을 미치지 않는다 따라서 자동차 세계를 무한히 확장할 수 있다! 즉, 클라이언트에 영향을 미치지 않는 선에서 새로운 기능을 적용시킬 수 있다 객체를 설계할 때 역할과 구현을 명확히 분리하여, 객체 설계 시 역할(인터페이스)을 먼저 부여하고... 객체지향스프링부트Springboot객체자바Springboot [Spring Boot] JPA 필터 정렬 구현 spring-boot 2.6.3 spring-boot-starter-data-jpa querydsl 1.0.10 build.gradle application.yml 구조 테스트 더미 데이터를 자동으로 넣어주는 GeneratorService 생성 필터와 정렬에 사용할 DB 제작 user - 유저 테이블 board - 게시물 테이블(postType로 필터 구현, 작성시간과 조회수로 정렬 구현) ... JPA스프링부트JPA 스프링부트 Kafka 연습 2 - JSON 주고받기 저번에 이어서 kafka 예제를 만들어 보겠습니다. 저번 예제에서는 String형식의 메세지만 주고 받았습니다. 제가 협업프로젝트를 하면서 대부분 프론트엔드와 JSON형식으로 통신했었기에 kafka도 JSON으로 통신해야할 필요성을 느껴서 예제를 만들었습니다. JSON을 주고 받으려면 Value의 Stringserializer부분을 JSON으로 바꿔주어야합니다. 기존 방식처럼 yml에 하려고... 스프링부트채팅Springboot카프카kafkaSpringboot 스프링부트 Redis 연습 1 - get/set 구현 스프링부트에서 Redis를 연동하는 연습용 프로젝트를 만들어 보겠습니다! 깃헙에 있는 정리본을 참고해주세요! Redis 서버를 킨 상태에서 코드를 작성해봅시다! autoConfiguration 덕분에 서버주소:포트번호만 적어줘도 StringRedisTemplate과 redisConnectionFactory는 자동 생성된다 메세지 모델 클래스 보내는사람과 내용을 필드로 가지고 있음. Json ... redis레디스Springboot스프링부트Springboot 스프링 JPA 핵심개념 두번째 1. 영속성(Persistence) 이란 2. ORM(Object Relational Mapping) 이란? 3. 하이버네이트 두번째 시간은 ORM이 낯설어서 용어정리나 기본 개념 정리가 필요할꺼 같았다. 1. 영속성(Persistence) 이란? 1. 정의 영속성 이란 ORM(Object Relational Mapping)에서 사용하는 말로 클래스 객체파일로 맵핑된 메타데이터로 데이터베이스... JPA스프링부트JPA