분류 전체보기 54

[Spring]빌드도구 Maven과 Gradle의 차이

Maven과 Gradle은 빌드 도구로, 프로젝트의 빌드, 테스트, 배포 등의 작업을 자동화하는 역할을 하지만, 두 도구는 동작 방식과 설정 방법, 성능 측면에서 차이가 있다.Maven 설정방식XML기반 설정 파일인 pom.xml을 사용 org.springframework.boot spring-boot-starter-web 2.5.0 빌드속도XML 설정 파일 기반으로 빌드를 수행하며, 빌드 시 매번 모든 작업을 다시 수행하는 경향이 있다.빌드 속도 : 상대적으로 느릴 수 있다.병렬 빌드 : Maven 3.0 이후부터 병렬 빌드를 지원하지만, 성능 최적화는 Gradle에 비해 제한적이다.의존성 관리중앙 저장소(Maven Central)를 기본으로 사용하며,..

Develop/Spring 2024.10.18

[Spring]Filter와 Interceptor의 개념 및 차이

개발을 하다보면 공통적으로 처리해야할 것들이 많은데, 이러한 공통적인 업무에 관련된 코드를 페이지 마다 작성한다면 중복코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수 있으며, 소스 관리가 되지 않을 수 있다. 이에 따라 Spring에서는 공통적으로 여러작업을 처리함으로써 중복된 코드를 제거할 수 있는 다음과 같은 기능들을 지원하고있다. 1. Filter2. Interceptor3. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)* Spring에서 사용되는 위의 3가지 기능들은 모두 어떠한 행동을 하기 전에 먼저 실행하거나, 실행한 후에 추가적인 행동을 할 때 사용하는 기능들이다. 먼저 Filter와 Interceptor의 개념과 차이점을 알아보고 In..

Develop/Spring 2024.10.17

[JAVA] JVM이란? 개념과 구조

Java Virtual Machine의 줄임말로, 자바 프로그램을 실행하기 위한 가상 환경이다.Java 는 OS에 종속적이지 않다는 특징을 가지고 있는데 OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요하다. >> 이것이 바로 JVM (즉, OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터) 자바 프로그램은 JVM 위에서 실행되며, JVM은 하드웨어와 운영체제에 독립적인 실행 환경을 제공한다. JVM은 자바 바이트코드를 읽고 이를 실행하며, 이를 통해 자바가 플랫폼 독립성을 갖게 된다.  주요 기능바이트코드 실행: 자바 컴파일러가 생성한 바이트코드를 실행하여 자바 프로그램이 실행될 수 있도록 한다.메모리 관리: JVM은 메모리를 효율적..

Develop/Java 2024.10.16

[Spring] Validator의 주요개념과 적용 방법

입력 데이터의 유효성 검증을 담당하는 기능 으로, 사용자로부터 입력된 값이 특정 조건을 만족하는지 확인하는 역할을 한다. Spring Framework에서 제공하는 Validator는 주로 폼 데이터나 요청 데이터의 유효성을 검증할 때 사용된다.  Spring Validator의 주요 개념- Spring에서는 Validator 인터페이스를 제공하여 사용자 정의 검증 로직을 구현할 수 있다.- 이 인터페이스는 다음 두 가지 메서드를 포함한다.supports(Class clazz): 해당 클래스가 이 Validator에서 검증 가능한지 여부를 결정validate(Object target, Errors errors): 검증 로직을 구현하는 메서드로, 실제 검증이 이 메서드에서 이루어진다. 검증이 실패하면 Er..

Develop/Spring 2024.10.02

[Tomcat] 톰캣 구조와 server.xml / context.xml

톰캣의 기본 폴더 구조의 트리형식Tomcat/│├── bin/│ ├── startup.sh│ ├── shutdown.sh│ └── catalina.sh│├── conf/│ ├── server.xml│ ├── web.xml│ ├── context.xml│ └── tomcat-users.xml│├── logs/│ └── catalina.out│├── webapps/│ ├── ROOT/│ ├── examples/│ ├── docs/│ ├── manager/│ └── host-manager/│├── lib/│ ├── servlet-api.jar│ ├── jsp-api.jar│ └── other libraries│├── temp/│└── work/ serv..

DevOps & Infra/Etc 2024.09.24

prod, dev, local

운영 환경(prod), 개발 환경(dev), 그리고 로컬 환경(local)의 각각 다른 목적과 특징 1. 로컬 환경 (local):목적: 개인 개발자가 자신의 로컬 컴퓨터에서 애플리케이션을 개발하고 테스트하기 위해 사용.특징:로컬에 설치된 데이터베이스나 테스트용 DB 사용.디버깅이나 로그가 많이 남도록 설정.복잡한 보안 설정이나 성능 최적화가 필요 없음.빠른 개발과 테스트를 위해 간단한 설정 사용.예시: -Dspring.profiles.active=local2. 개발 환경 (dev):목적: 팀 단위로 공유되는 개발 서버에서 테스트하거나, 개발 완료된 기능을 통합하고 확인하는 환경.특징:여러 개발자가 공용으로 사용하는 개발 서버에서 실행.실제 운영 데이터베이스와 유사한 개발용 데이터베이스를 사용.로컬보다 ..

CS 2024.09.23

[JPA]VM Options 설정하기

VM options는 Java 가상 머신(JVM)의 동작을 제어하는 설정이다.이 옵션은 프로그램을 실행할 때 JVM의 메모리 관리, 성능 조정, 디버깅 기능 등을 설정하는데 사용된다. JPA를 사용하는 애플리케이션에서 JVM 옵션을 설정하는 경우가 많습니다. 예를 들어, 메모리 사용량을 조정하거나, JPA 구현체(예: Hibernate)의 로그 레벨을 조정하는 데 VM 옵션을 사용할 수 있다.  일반적인 VM 옵션의 예시-Dspring.profiles.active=local (dev, prod) 역할 : 활성화할 Spring 프로파일을 설정 설명:  local 프로파일이 활성화되어 로컬 개발 환경에 맞는 설정이 적용됨 예시:- dev: 개발 환경에서 사용 (`-Dspring.profiles.active=..

Develop/JPA 2024.09.23

[Thymeleaf]몇번째 배열인지 모를때 마지막 데이터 가져오기

처음에 [0]번째 요소를 참고하기 위해서 item.houseorganImages[0]을 사용했지만,마지막 이미지를 불러오기 위해서는 size()를 사용해야한다는 것을 알았다. 이미지가 게시글마다 들어가는 갯수가 달라서 정확한 몇번째인지 알 수 없는 상태에서는 이미지 배열 size()에서 -1을 해주어서 지정이 가능하다.  >> item.houseorganImages[item.houseorganImages.size() - 1] 표현식을 사용하여 item.houseorganImages 리스트의 마지막 요소를 참조

[Thymeleaf]th:each 속성을 사용할 때 사용하는 status 객체

hymeleaf에서 th:each 속성을 사용할 때, 두 번째 변수로 status 객체를 정의하면 반복 상태에 대한 유용한 정보들을 제공한다. 이 객체는 루프의 현재 상태를 나타내며 여러 속성을 통해 다음과 같은 정보에 접근할 수 있다. 💻 Status 객체  index : 현재 반복의 0 기반 인덱스.count : 현재 반복의 1 기반 인덱스.size : 반복 중인 컬렉션의 전체 크기.current : 현재 반복 중인 요소.even : 현재 인덱스가 짝수인지 여부를 나타내는 Boolean 값.odd : 현재 인덱스가 홀수인지 여부를 나타내는 Boolean 값.first : 현재 요소가 첫 번째인지 여부를 나타내는 Boolean 값.last : 현재 요소가 마지막인지 여부를 나타내는 Boolean 값...

@RequestBody와 @ModelAttribute

@RequestBody와 @ModelAttribute는 Spring MVC에서 요청 데이터를 컨트롤러 메서드의 파라미터로 바인딩하는 두 가지 주요 방법이다. 둘 다 요청 데이터를 처리하지만, 사용하는 방식과 목적이 다르다.💻 @RequestBody용도: HTTP 요청의 본문(body)을 직접 객체로 변환. 주로 JSON, XML 등의 형식으로 요청 본문이 전송될 때 사용돤다.사용 예:클라이언트가 JSON 형태의 데이터를 서버로 전송할 때RESTful API에서 JSON/XML과 같은 데이터를 처리할 때예제:@PostMapping(value = "/words/popup/jquery") public String operate(@RequestBody ConditionDto conditionDto, Model..

Develop/Spring 2024.08.01