springboot 7

[Spring] @PropertySource, @Value 어노테이션에 대해 알아보자

개발을 할 때, Property 파일을 resource 폴더 내에 만들어 두고 필요할 때 해당 값을 많이 읽어옵니다. 주로 데이터베이스 연결 설정이나 Property 파일의 속성을 주입할 때 사용합니다. 즉, @PropertySource 어노테이션을 통해 외부의 설정 파일(.properties, .yml)을 읽어와 해당 정보를 사용할 수 있게 됩니다. 이제 @PropertySource, @Value에 대해 간단하게 설명 드리도록 하겠습니다. @PropertySource("value = "classpath:allergy.properties") classpath:allergy.properties 경로에 있는 설정 파일을 읽어옵니다. Environment 객체를 이용해서 해당 설정 값을 가져올 수 있습니다. ..

Java/Spring 2023.11.25

[Spring] JPA Auditing 기술을 사용하여 생성일자, 수정일자 컬럼의 데이터 형식을 깔끔하게 지정하는법

JPA Auditing 기술은 엔티티를 생성 및 변경할 때, 생성시간, 수정시간 등을 자동으로 삽입해 주는 기능입니다. Audit은 감사하다, 추적하다의 의미를 지니는데, Auditing 기술을 이용하면 마지막에 데이터를 생성 및 수정한 사람과 시간을 추적할 수 있게 됩니다. 우선, Auditing 기술을 사용하게 위해, SpringApplication.class에 다음과 같은 어노테이션을 지정해줘야 합니다. @EnableJpaAuditing public class ExerciseApplication { public static void main(String[] args) { SpringApplication.run(ExerciseApplication.class, args); } } 다음으로 생성시간, 수..

Java/Spring 2023.11.24

[Spring] 계층형 디렉터리, 도메인형 디렉터리 구조

개발을 할 때 디렉터리 구조를 설계하는 방법은 크게 두 가지로 나뉩니다. 계층형 디렉터리, 도메인형 디렉터리 2가지로 구성되는데, 저는 항상 계층형 디렉터리로 설계해 왔습니다. 각각의 디렉터리 구조에는 장, 단점이 있지만, 프로젝트 규모와 팀원들 협업 스타일에 알맞게 설계하는 것이 중요하다고 생각합니다. 이제 차근차근 알아보도록 하겠습니다. 1. 계층형 디렉토리 구조(Layered Directory Structure) 기능 또는 역할에 따라 코드를 계층별로 그룹화하는 방식을 계층형 디렉터리 구조라고 합니다. Web Layer: Client와의 요청을 받아 처리하는 역할 담당을 담당, 컨트롤러(Controller), 필터(Filter) 관련 클래스들이 위치하며, HTTP 요청을 처리하여 비즈니스 로직 수행..

Java/Spring 2023.09.27

[Docker] Dockerfile을 이용해 SpringApplication 빌드 및 실행

Dockerfile을 이용해서 image를 생성하고, SpringWebApplication을 실행해보려고 합니다. dependency는 Spring Web만 추가하면 끝입니다. 우선 여기서 build를 진행해 줘야 jar파일이 생깁니다. 이후 cd build/libs로 이동하면, 다음과 같이 jar파일이 있음을 확인하실 수 있습니다. 추가적으로 도커로 실행하기 위해 openjdk 11 images을 다운로드 받아야 합니다. (docker pull openjdk:11-jre-slim) .jar파일이 있는 곳에 Dockerfile을 작성해야 합니다. FROM : [images name]:[tag name] ARG: build 시점에만 사용되는 변수 COPY: JAR_FILE의 변수를 app.jar로 복사 E..

DevOps/Docker 2023.09.14

[Docker] Docker-Compose를 사용하여 Springboot와 ELK stack 연동

ELK에 대해 간단하게 설명드리고 springboot와 elk stack을 연동해서 springboot 애플리케이션의 log를 수집하고, 검색 및 시각화하는 과정에 대해서 보여드리겠습니다. ELK Stack Logstash 다양한 소스(DB)의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 ES에게 전달 ElasticSearch Logstash로부터 받은 데이터를 검색 및 집계하여 필요한 관심 있는 정보 획득 Kibana Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링 우선 elk stack을 연동하기 위해 elk 관련 image를 다운로드 받아야 합니다. (호환성을 위해 elk 버전 일치 시켰습니다) docker pull elasticsearch:8.3.3 docker p..

DevOps/Docker 2023.09.04

[Docker] Docker-Compose를 사용하여 Springboot, Mysql 연동

Docker-Compose.yml에 Springboot, Mysql 설정파일을 추가하여 2개의 컨테이너를 구성한 애플리케이션을 실행시켜 보려고 합니다. 우선적으로 백엔드 서버, DB 서버를 연동하는 것이 목표기 때문에 간단한 프로젝트를 가지고 왔습니다. 한 가지 주의사항은 포트 충돌을 방지하기 위해 Mysql DB 서비스를 꺼놔야 합니다. Terminal: netstat -ano | findstr 3306 (3306 포트를 사용하는 프로그램 확인) 3306 포트를 사용하고 있는 프로그램이 있다면 중지시켜야 합니다. 상품을 조회하는 로직 하나를 만들어 두었고, 다음과 같이 더미데이터를 넣어두었습니다. 이제 application.yml부터 docker-compose.yml 까지 차근차근 설명드리겠습니다. 애..

DevOps/Docker 2023.08.31

스프링부트 기본구조 및 JPA

1️⃣.Domain(Entity) -Mysql 테이블과 매핑되는 클래스이다. -테이블 정보를 가공할 때 필요하다. -JPA 사용시 여러 어노테이션을 사용하며, 테이블, 필드, 필드 옵션 등을 설정한다. 2️⃣.Repository(데이터베이스에서 데이터를 넣고 빼는것을 담당) -repository는 DB와 스프링서버를 연결시켜줄 수 있다. -스프링 서버가 데이터가 필요한 경우 Repository(JPA) 통해 데이터베이스의 데이터를 가져온다. 3️⃣Service(기능 구현 담당) -기능 구현을 하기 위한 클래스 -Repository한테 데이터를 받아온 후, 기능을 구현해서 Controller에게 리턴해준다. -데이터는 Repository(JPA)에 있던 데이터이다. 4️⃣Controller(요청 담당) -..

Java/Spring 2022.07.04