본문 바로가기

BackEnd : Spring

(32)
[SpringBoot] JpaRepository @Modifying, @Transactional public interface RecCampListRepository extends JpaRepository { @Query("SELECT rc FROM RecCampList rc WHERE rc.user.id = :userId") List getByUser(@Param("userId") String userId); @Query("SELECT rc FROM RecCampList rc WHERE rc.doNm = :doNm and rc.user.id = :userId") List getByDoNmAndUser(@Param("userId") String userId, @Param("doNm") String doNm); @Modifying @Transactional @Qu..
[AWS] SpringBoot 프로젝트 AWS CodeDeploy + S3 + Github Actions를 이용하여 CI/CD 구축, Docker + EC2 + RDS 로 배포하기 프로젝트 아키텍처1. EC2 서버 만들기참고한 글 : https://velog.io/@jonghyun3668/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-EC2-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0 SpringBoot 프로젝트 EC2 배포하기깃헙에 있는 프로젝트를 AWS EC2에 git clone을 통해 내려받아 jar 파일 빌드를 해보겠습니다.(EC2 인스턴스는 우분투로 진행합니다. 또한 따로 배포 시스템을 구축하지 않고 수동으로 배포하는것만velog.io 2. RDS 데이터베이스 생성Docker로 스프링부트 jar 파일과 mariadb를 이미지화 하여 EC2 서버에 배포 하려고 하였으나,java.lang.NullPointerExce..
[AWS] SpringBoot + AWS S3에 이미지 업로드하기 AWS S3 버킷 생성내 pc로 접근할 것이기 때문에 모든 퍼블릭 액세스 차단 해제나머지 설정은 건드리지 않음버킷이 생성되었다유저의 프로필 사진들을 저장할 profile_imgs 폴더를 만들어준다IAM 만들기사용자 생성 완료IAM accessKey, secretKey 얻기IAM - 사용자 - 보안 자격 증명액세스 키 만들기버킷 접근 권한 설정코드를 다 알맞게 작성했는데 이미지가 안불러와져서 알아보니 버킷에 getobject가 가능하도록 권한을 설정해줘야 했다!나의 버킷에서 권한 정책을 이렇게 수정하였다.{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "All..
[TalentTree 프로젝트] HttpSession : 로그인된 사용자 정보 가져오기 HttpSession을 사용하게 된 배경원래 스프링 프로젝트에서 로그인, 로그아웃에서 사용자 정보를 관리하는 것을 Spring Security를 쓰곤 한다.이 프로젝트 개발 기간이 짧기도 했고, 최초 로그인 시 회원가입으로 구현하기로 하여 세션에 로그인된 사용자 정보를 담기로 했다.LoginController로그인과 관련된 로직을 처리하는 Controller이다.@Controller@RequiredArgsConstructorpublic class LoginController { private static String UPLOAD_DIR = System.getProperty("user.dir") + "/src/main/resources/static/bootstrap/assets/uploads"; ..
[Springboot] 연관관계 매핑 : 일대일 연관관계 매핑 종류One To One : 일대일One To Many : 일대다Many To One : 다대일Many To Many : 다대다연관관계 매핑 방향단방향 : 두 엔티티의 관계에서 한쪽의 엔티티만 참조하는 형식양방향 : 두 엔티티의 관계에서 각 엔티티가 서로의 엔티티를 참조하는 형식일대일 매핑1. 일대일 단방향 매핑BaseEntity@Getter@Setter@ToString@MappedSuperclass@EntityListeners(AuditingEntityListener.class)public class BaseEntity { @CreatedDate @Column(updatable = false) private LocalDateTime createdAt; @LastModi..
[Springboot] SpringBoot 3.x maven+ QueryDSL 설정하기 pom.xml 5.0.0 com.querydsl querydsl-apt ${querydsl.version} jakarta com.querydsl querydsl-jpa jakarta ${querydsl.version} com.querydsl querydsl-core 5.0.0 기존의 공식문서를 참고하면 plugin도 추가해주어야 하는데, 여러번의 오류와 서치 끝에 spring boot 3 이상 버전과 java 17 이후로 jakarta에서 plugin이 deprecated 되었다는 정보를 확인하였다.https://samori.tistory.com/60 Querydsl + Spring 3.0 + Java17 업데이트 내용! [Maven+Gra..
[Springboot] MockBean 테스트 코드 작성하기 @WebMvcTestpublic class ProductControllerTest { @Autowired private MockMvc mockMvc; @MockBean ProductServiceImpl productService; @Test @DisplayName("MockMvc를 통한 Product 데이터 가져오기 테스트") void getProductTest() throws Exception { given(productService.getProduct(123L)).willReturn( new ProductResponseDto(123L,"pen",5000,2000) ); S..
[Springboot] Spring Doc으로 api 문서화하기 https://springdoc.org/ OpenAPI 3 Library for spring-bootLibrary for OpenAPI 3 with spring boot projects. Is based on swagger-ui, to display the OpenAPI description.Generates automatically the OpenAPI file.springdoc.org1. pom.xml에 의존성 추가나는 스프링 3.x 버전을 쓰고 있어 swagger 대신 spring doc을 사용하였다.스프링 3 버전 : springdoc-openapi v2.5.0 사용하기 org.springdoc springdoc-openapi-starter-webmvc-ui 2.5.0 ..