전체 글 34

@AllArgsConstructor 와 @Builder

🤍 @AllArgsConstructor모든 필드를 파라미터로 받는 생성자를 자동으로 생성합니다.따라서, 모든 필드를 한 번에 초기화해야 합니다. @AllArgsConstructorpublic class SignupRequestDto { private String name; private LocalDate birth; private String email; private String firstAddress; private String secondAddress; private String password;}// 모든 필드를 한번에 초기화한 객체SignupRequestDto dto = new SignupRequestDto("레이지캣", LocalDate.of(1990, 1, ..

[Spring] 스프링의 Collection Injection

🤍 Collection Injection스프링은 자동으로 타입에 맞는 Bean을 찾아서 주입해주는 기능이 있다. Map와 같이 Map으로 선언하면 AbstractTemplate의 구현체들을 모두 찾아서 key값으로 구현체의 빈 이름을, value 값으로 구현 객체를 담아 주입해준다. List도 마찬가지다. AbstractTemplate의 구현체들을 List에 담아 주입해준다. 이것을 Collection Injection 이라고 한다.  🤍 트러블 슈팅문제상황 AbstractOAuthTemplate의 구현체들을스프링 빈으로 등록 후 Map에 추가하여"naver"와 "kakao"라는 문자열을 받으면 구현객체를 반환하고자 함 그러나 Service코드에서 "naver"를 받으면 null 값을 반환함.  원인..

DTO와 엔티티의 역할, 비즈니스 로직의 위치

🤍DTO와 엔티티 역할의 차이1. DTO의 역할데이터 전달 객체: 주로 클라이언트와 서버 간, 계층 간 데이터를 전달하는데 사용됩니다.얇은 계층 객체: 데이터 전달과 유효성 검사만 담당하며, 비즈니스 로직은 포함하지 않습니다.2. 엔티티의 역할도메인 객체: 데이터베이스와 매핑되며, 비즈니스 로직과 데이터를 함께 포함합니다.상태와 행위 관리: 상태의 유효성을 보장하고, 필요한 상태 변경 로직을 포함합니다. 🤍프로젝트 코드 리팩토링 방향 회원가입 DTO에서 회원 Entity로의 변환을 돕는 비즈니스 로직이 포함되어있는 상태이다. 그러나 DTO에 toEntity()를 포함하게 된다면,단일 책임 원칙(SRP) 위반: 데이터 전달과 객체 변환이라는 두 가지 책임을 지게 된다.DTO와 엔티티의 강한 결합: DT..

[Spring] Mock 테스트

🤍소프트웨어 테스트1. TDD (Test-driven development)개발 전 테스트 코드를 먼저 작성하는 방식을 의미한다. 2. 왜 TDD를 사용해야 할까?테스트를 잘 작성하기 위해선,  모든 요구 사항에 대한 철저한 점검이 필요하기 떄문이다!시스템 전반적인 설계 향상개발 집중력 향상3. 테스트 종류테스트 종류범위 대상속도도구/기법단위 테스트작은 단위(메소드, 클래스)개별 로직빠름JUnit, Mockito 통합 테스트모듈 간 상호작용여러 모듈(컨트롤러 - 서비스 등)보통Spring Boot Test시스템 테스트애플리케이션 전체애플리케이션 전체느림  1. 단위테스트(Unit Test)개별 메소드, 클래스 등 작은 단위가 예상대로 동작하는지 검증가장 작은 테스트 단위Mock 객체를 활용해 외부 의존..

Jenkins를 이용한 CI/CD 구축 (spring, docker, nginx, docker) 2

💜 OUTLINE오늘은 젠킨스와 EC2 연결하고 젠킨스 구동에 필요한 플러그인들은 설치할 것이다!다음편엔 젠킨스와 Github를 연결하며 CI/CD 구축을 마무리할 예정이다.  🤍Gradle 설치설치 목적: gradle 프로젝트를 빌드하기 위해 필요한 환경세팅  Gradle installations로 이동  우리 프로젝트는 8.4버전을 쓰고 있기 때문에 다음과 같이 작성했다!     🤍Jenkins - EC2연결, ssh agent 설치 설치 목적: Jenkins와 EC2 VM이 통신하기 위해서 필요한 플러그인이다 Dashboard > Jenkins 관리 > Plugins 클릭  검색창에 ssh agent 입력 후 설치!  설치가 완료되면 Dashboard > Credentials 클릭!    St..

Programming/Jenkins 2024.11.16

Jenkins를 이용한 CI/CD 구축 (spring, docker, nginx, docker) 1

🤍Jenkins 컨테이너 설치우리 프로젝트의 시스템 아키텍쳐는 아래와 같습니다 Docker에 대한 설명은 생략하고 도커 위에 젠킨스를 설치하게씁니다! 우리 프로젝트는 docker-compose.yml로 모든 컨테이너들을 관리하기 때문에이 파일에 Jenkins 이미지를 작성합니다. docker-compose.yml jenkins: container_name: jenkins-compose image: jenkins/jenkins:lts user: root ports: - "8090:8080" volumes: - /home/ubuntu/libs/jenkins:/var/jenkins_home - /home/ubuntu/.ssh:/root/.ssh ..

Programming/Jenkins 2024.11.15

Jenkins를 이용한 CI/CD 구축 (spring, docker, nginx, docker) 0

🤍 내가 이해한 CI/CD의 개념1. CIContinuos Integration은 지속적인 통합을 의미합니다. 개발자가 코드 변경 사항을 공유 소스 코드 리포지토리에 자주 통합하는 사례가 CI에 해당됩니다. 2. CDContinuous Deploy는 지속적인 배포를 의미합니다.개발자가 작성한 코드를 배포 준비를 하고, 환경에 배포하는 단계입니다.   🤍 우리 프로젝트의 전반적인 CI/CD 프로세스먼저, 제가 jenkins를 사용하기 전에 수동으로 우리 프로젝트를 빌드하고 배포하던 과정을 설명드리겠습니다 1. AWS EC2 에 접속2. 루트 폴더 아래에 있는 backend 폴더로 이동cd backend3. 최신 커밋을 내려받음 (test branch로 고정함)git checkout test // tes..

Programming/Jenkins 2024.11.12

[AWS] EC2 퍼블릭 IPv4 DNS에 연결 거부됨, 연결 안됨, 비공개 등 문제발생

0. 필자의 컴퓨터 환경Window 11 유저로 Ubuntu를 통해 EC2 구현 중에 고통을 받게 됨. 1. 문제 발생EC2 인스턴스를 생성하면 할당되는 ip 주소로 접속했으나 연결이 거부됨. 2. 뻘짓 과정정확히 2024년 7월 12일에 약 6시간동안 이 문제를 해결하기 위해모든 블로그와 티스토리에 있는 해결책대로 실행해봄* 보안그룹 설정 -> 제대로 되어있는데 그럼에도 불구하고 http, https로 접속 안됨 (80포트 443포트 잘 열어둠)* 인스턴스 삭제-생성만 10번은 함* putty로 했다가 ubuntu로 했다가 결국에 기도메타로 계정문젠가 싶어서 새 계정도 파봄 3. 해결 과정여러분은 저처럼 고생하지마세요!!!!!ㅠ^ㅠ행복하게 코딩 하실 권리가 충분히 있습니다!!!https://www.yo..

[후기] XINMENG M87 키보드 블루투스 연결, LED 끄는법

살면서 처음으로 내돈내산한 기계식 키보드다.유튜브 쇼츠로만 귀를 만족해왔었는데듣는것만으로는 부족해서 결국 질러버리고 말았다 (2024년 최고의 선택)소리가 옥구슬같은게코딩하는 스트레스가 한번에 날가가게 되.   Xinmeng M87 03.15에 58,900원에 구매03.27에 수령   1. 블루투스 연결하는 법먼저 키보드 윗쪽에 configuration 버튼 팩이 있느데 해당 부분을 자신의 컴퓨터에 맞게 Window 혹은 Mac을 설정하고블루투스쪽으로 버튼을 On 한다. 옆에 있는 블루투스 동굴을 뽑아 컴퓨터에 연결해주는 것도 잊지 않는다. Fn버튼 + Q  를 길게 누르면 한 3~4초후에Q 버튼 아래에 파란색 조명이 깜빡깜빡 들어오는 것을 볼 수있다.블루투스 페어링모드가 실행된 것이므로 이때 컴퓨터에서..

일상 생활 2024.03.27
반응형