Backend 29

spring boot 개발환경 설정(spring initializr)

프로젝트 기본 구조를 생성할 때 spring initializr를 이용한다. 1. Extension 설치 2. Command Palette에 Spring Initialzr을 입력 *ctrl + shift + p 를 누르고면 Command Palette가 나옵니다. 저는 gradle 프로젝트를 생성했습니다!! 위의 명령어 입력후 아래 기본 정보를 순서대로 선택하게 되어있는데 프로젝트 언어 말고는 전부 그냥 엔터쳤습니다. dependency도 뭐가 필요한지 잘 몰라서 lombok만 미리 추가했습니다. 스프링 부트 버전 프로젝트 언어 (JAVA선택) 그룹 ID Artifact ID 패키지 타입 자바버전 Dependency 3. 기본 구조 생성 완료 Artifact ID는 demo라는 폴더명 이였네요ㅎㅎ

Backend/spring 2023.08.18

JAVA에서 html 다루기 (Jsoup)

JAVA에서 html을 String 데이터로 들고 있는데 특정 요소에 속성을 추가하는게 필요했습니다. 라이브러리 종류 3가지 방법(Jsoup, javax.swing.text.html3, HTML Template Engine)에 대해 알아보았는데 아래에 각 라이브러리의 사용 사례와 특징을 설명하겠습니다. 선택 시 프로젝트의 요구사항과 개발 환경을 고려하여 결정하시면 됩니다. 1. Jsoup: HTML을 파싱하고 조작하는 작업에 우수한 성능을 제공하는 라이브러리입니다. 주로 웹 스크래핑, HTML 파싱, 수정, 정보 추출 등에 사용됩니다. 특히 복잡한 HTML 문서를 다루는 데 편리하며, 간단한 DOM 조작과 선택이 필요한 경우에도 유용합니다. import org.jsoup.Jsoup; import org...

Backend/JAVA 2023.08.16

[JAVA] 패키지와 클래스 (같은 이름의 클래스 import)

패키지(package) 자바는 클래스의 구분을 위해 패키지를 사용합니다. 패키지는 클래스들을 논리적으로 그룹화하여 충돌을 방지하고, 클래스의 이름을 명확하게 지정하는 데 도움을 줍니다. FQCN (Fully Qualified Class Name) 클래스의 정규화된 이름은 패키지를 포함하여 클래스를 명시적으로 지정하는 방법입니다. 이를 사용하면 라이브러리명이 겹칠 때 충돌을 피하고 원하는 클래스를 명확히 지정할 수 있습니다. 만약 같은 이름의 클래스가 다른 패키지에 있을 때, import 문을 사용하여 해당 클래스를 구분하면 됩니다. 자바에서 import 문은 다음과 같이 사용됩니다: // 패키지가 com.example.package1인 MyClass 클래스를 import import com.example..

Backend/JAVA 2023.07.25

JAVA 문자열 비교 (== 연산자와 equals 메서드의 차이)

class Main { public static void main(String[] args) { String str1 = "Programming"; // true or false String str2 = "Programming"; String str3 = new String("Programming"); System.out.println(str1==str2); // true System.out.println(str1==str3); // false System.out.println(str1.equals(str3)); // true System.out.println(str2.equals(str3)); // true } } str1==str2: str1과 str2는 모두 문자열 리터럴인 "Programming"..

Backend/JAVA 2023.07.25

자바 메모리 구조(with Constant Pool)

자바의 메모리 구조는 다음과 같이 크게 세 가지 영역으로 나뉘어집니다. 자바 프로그램이 실행되면, JVM은 아래 세 영역을 생성하고 메모리를 관리합니다. 이렇게 분리된 메모리 구조는 자바의 안정성과 자동 메모리 관리를 가능하게 합니다. 1. 메소드 영역 (Method Area 또는 클래스 영역): 모든 스레드가 공유하는 영역으로, 클래스 정보와 클래스 변수(static 변수)가 저장됩니다. 클래스 정보는 클래스의 구조와 멤버 변수, 메서드 코드 등을 포함합니다. JVM이 실행될 때 클래스 로더에 의해 클래스 파일이 로드되고 파싱되어 메소드 영역에 저장됩니다. 상수 풀(Constant Pool): 상수 풀은 클래스 파일 내부에 위치한 특별한 메모리 영역입니다. 클래스 파일에는 리터럴 값(문자열, 정수, 부..

Backend/JAVA 2023.07.25

Java 객체 형변환 (mapper.convertValue)

자바에서 직접 형변환을 할 수 없는 경우가 있습니다. 아래는 예제입니다. @RequestMapping(value = "/convertValueTest", method = RequestMethod.POST) @ResponseBody public HashMap convertValueTest(@RequestBody Map param, HttpServletRequest request) { HashMap result = new HashMap(); try { ObjectMapper mapper = new ObjectMapper(); TestModel testModel = mapper.convertValue(param.get("testModel"), new TypeReference() {}); service.conv..

Backend/JAVA 2023.06.14

[spring] @RequestParam @RequestBody 차이점

@RequestParam과 @RequestBody는 Spring Framework에서 요청 파라미터를 받는 데 사용되는 어노테이션입니다. @RequestParam 사용법: @RequestParam("paramName") 역할: URL 매개변수를 받아올 때 사용합니다. 예를 들어, ?paramName=value 형태의 URL 매개변수에서 paramName에 해당하는 값을 받아올 수 있습니다. 기본적으로는 요청의 쿼리스트링(또는 폼 데이터)에서 해당 매개변수를 찾아 값을 바인딩합니다. required 옵션을 사용하여 필수 매개변수 여부를 지정할 수 있습니다. 기본적으로는 단일 값을 받지만, List나 배열을 사용하여 여러 값을 받을 수도 있습니다. @RequestBody 사용법: @RequestBody 역할..

Backend/spring 2023.05.25

프로젝트 배포 tomcat 설정

WAS(Wep Application Server)는 웹 애플리케이션을 실행하기 위한 서버 환경을 제공하는 소프트웨어입니다. WAS는 웹 서버와는 다른 개념이며, 독립적으로 웹 애플리케이션을 실행하고 관리하는 역할을 수행합니다. 웹 애플리케이션의 실행 환경을 구축하고 관리 WAS는 Java EE(Java Enterprise Edition) 표준을 준수하는 서버이며, 대표적인 WAS로는 Apache Tomcat, IBM WebSphere, Oracle WebLogic, JBoss 등이 있습니다. 1. VsCode에서 프로젝트의 배포용 application.properties 파일을 확인 아래는 application.properties 예시 입니다. tomcat과 관련해서는 context-path만 확인하면 ..

Backend/tomcat 2023.05.12

spring bean 주입 방법

스프링 프레임워크에서 의존성을 주입하는 방법은 3가지가 있습니다.Constructor Injection (생성자 주입) -> 권장Setter Injection (세터 주입)Field Injection (필드 주입)종류1.Constructor Injection (생성자 주입)클래스의 생성자를 통해 의존성을 주입합니다. 클래스에 필요한 의존성을 생성자 매개변수로 선언하고, Spring은 해당 매개변수에 맞는 Bean을 찾아 주입합니다.주입되는 Bean은 XML 또는 Java Config와 같은 설정 파일에서 정의됩니다.객체가 생성될 때 한 번만 호출됩니다. 즉, 객체가 처음 만들어질 때 필드 값을 초기화합니다.public class MyClass { private MyDependency myDepend..

Backend/spring 2023.05.10

[JAVA] 자바 외부 파일/ 외부 프로그램/ 명령어 실행 (exec)

exec() exec() 메소드는 Runtime 클래스의 getRuntime() 메소드를 사용하여 Runtime 객체를 생성한 다음, Runtime 객체의 exec() 메소드를 호출하여 외부 프로그램을 실행합니다. exec() 메소드는 실행할 외부 프로그램의 이름, 매개변수, 작업 디렉토리 등을 인자로 전달할 수 있습니다. public Process exec(String command, String[] envp, File dir) 매개변수 command: 지정된 시스템 명령. envp: 문자열 배열, 각 요소에 name=value 형식의 환경 변수 설정이 있거나 하위 프로세스가 현재 프로세스의 환경을 상속해야 하는 경우 null입니다. dir: 하위 프로세스의 작업 디렉토리, 하위 프로세스가 현재 프로세..

Backend/JAVA 2023.04.26