본문 바로가기
반응형

자바,스프링 - Java,Spring Framework31

spring profile, 스프링 profile, spring 환경별 구성 다르게 하기, spring 설정방법, spring.profiles.active spring profile이란스프링 프로파일(Spring Profile)은 스프링 프레임워크에서 애플리케이션의 환경 설정을 구분하기 위한 기능입니다.프로파일은 애플리케이션을 실행할 때 선택할 수 있습니다.예를 들어, 개발 환경에서는 "dev" 프로파일을 선택하고,운영 환경에서는 "prod" 프로파일을 선택할 수 있습니다.예를 들어, 동일한 로직을 수행하는 스프링 app을 운영/개발 환경에 각각 배포하여,각각 운영/개발 db에 접속하고자 하는 경우, 아래와 같은 구조로 deploy 할 수 있습니다.@startuml component 운영환경 { component B as "spring app.jar" { component D as "dev profile" component E as "prod profile.. 2024. 11. 13.
maven dependency scope, provided, system, import, runtime, test maven dependency scopemaven의 dependency에는 scope란 속성을 정의하는 부분이 있는데, 어떤 것들이 있는지 잠깐 살펴보겠습니다.총 6가지의 scope를 지정할 수 있으며, 각각의 설명은 아래와 같습니다.compile기본 스코프로, 명시하지 않을 경우 사용됩니다.컴파일 종속성은 프로젝트의 모든 클래스 경로에서 사용할 수 있습니다.또한 이러한 종속성은 종속 프로젝트에도 전파됩니다. devscb devscb-lib 1.0.0provided컴파일과 비슷하지만 JDK 또는 컨테이너가 런타임에 종속성을 제공할 것으로 예상한다는 것을 나타냅니다.예를 들어 자바 엔터프라이즈 에디션(Java Enterprise Edition)용 웹 애플리케이션을 빌드할 때서블릿 API와 .. 2024. 11. 12.
maven local jar 추가 import , Maven Repository 없이 로컬 jar 파일을 maven project 에 추가하기, pom.xml 로컬 jar 파일 import하기 maven에서 local jar 추가 / import 하기1) 오프라인에서 빌드를 해야하거나,2) maven central repository에 존재하지 않는 jar를 추가해야할 경우가 있습니다.이럴 때, 로컬에 있는 jar를 import 해서 빌드하는 법을 공유드립니다.아래와 같이 pom.xml에 dependencies tag안에 dependency를 추가할때,scope 를 system으로 하고, systemPath에 jar의 위치를 입력해주시면 됩니다. devscb devscb-lib 1.0.0 system ${project.basedir}/lib/devscb-lib.jar${project.basedir} 는 프로젝트의 root 경로로,위의 예제에서는 프로젝트 root 경로.. 2024. 11. 11.
java jni란?, jni 사용하기, windows에서 jni사용하기, 윈도jni java jni란?jni는 Java Native Interface 입니다.Java에서 native 코드로 작성된 라이브러리를 연계해줄 수 있는 기술입니다.예를 들어, C나 C++같은 다른 코드로 작성된 라이브러리와 연계해주는 기술이라고 정의할 수 있습니다.Java는 기본적으로 JVM위에서 실행되기에 특정운영체제에 종속적이지 않는데요,모든 운영체제의 기능을 JVM에 담을 수 없기에 특정 OS의 기능을 실행하지 못하는 경우가 존재할 수 있습니다.이처럼 Java로 구현하기 힘든 기능에 대해 Native Code (예를 들어 C나 C++로 작성된 dll이나 so파일)를 사용할 수 있도록 하게 해주는 기능입니다.java코드에서는 native 키워드를 사용할 수 있으며, java 기본 라이브러리에서도 사용하고 있습.. 2024. 11. 10.
Java프로젝트에 lo4j2 적용하기 java진영의 로깅 라이브러리는 log4j2가 굉장히 효율적입니다. (https://devscb.com/post/253)그러나, 많이 사용되고 있는 springboot에서는 logback을 기본 로깅라이브러리로 사용하고 있습니다.단순히 dependency 추가하면 되는것 아닌가 싶지만, 바로 빌드가 안되던 경험이 있어서 공유합니다.maven을 사용할 경우pom.xml의 dependencys 엘리먼트 하위에 아래 내용을 추가해줍니다. org.springframework.boot spring-boot-starter-log4j2그런데, 이렇게만 하면 spring boot 실행시 다음과 같은 붉은 메시지를 확인할 수 있습니다.SLF4J: Class path contains multiple SLF4J bindin.. 2024. 11. 9.
java프로젝트에 log4j2를 도입해야하는 이유. 한줄요약log4j2는 java진영의 최신 로깅 라이브러리 이며 성능이 좋기에 도입을 추천드립니다.로깅라이브러리를 도입해야하는 이유일부 개발자는 개발하면서 system.out.println() 을 이용해서 로깅하시는 분들도 있습니다.하지만, sysout(System.out)은 로깅에 사용하면 성능상 좋지 않습니다.이유는 아래와 같습니다.System.out.println()과 System.out.print() 메서드는 내부적으로 write()랑 newLine()을 사용하는데,write()와 newLine()이 동기화(synchronized) 메서드이기에 성능이 저하됩니다.또한, 이 메소드는 Blocking I/O로 호출되기에,해당 메소드가 호출되는 시간동안 CPU가 놀게 되기 때문에 성능 저하의 원인이 됩니.. 2024. 11. 8.
java의 .class 파일의 맨 처음에는 CAFE BABE (카페 베이베) 가 적힌거 아시나요?, 파일 hex 값 보기 .class 파일의 맨 처음에는 CAFE BABE (카페 베이베) 가 적힌거 아시나요?hex editor로 .java 파일을 컴파일한 .class로 된 파일을 열어보면,아래와 같이 CAFEBABE로 시작하는 것을 확인할 수 있습니다.hex editor 확인방법vscode에서 ctrl + shift +x 버튼을 눌른 후, 플러그인 hex editor 플러그인을 설치해줍니다.vscode에 .class로 된 파일을 drag & drop 한 뒤, open anyway버튼 -> hex editor 를 선택하면, hex 값을 확인할 수 있습니다.CAFE BABE가 된 이유자바의 아버지 제임스 고슬링의 설명 :우리는 예전에 세인트 마이클스 앨리라는 곳에서 점심을 먹곤 했습니다. 지역 전설에 따르면 아주 먼 옛날 그레.. 2024. 9. 24.
Java 주요 버전별 spring / spring boot 호환성 java 버전에 따라 spring / spring boot 호환성 비교표Java 버전Java 출시일Java 지원종료일spring 지원버전spring boot 지원버전Java SE 8 (LTS)2014/03/18April 2019 for Oracle (extended : January 2032)November 2026 for Eclipse TemurinNovember 2026 for Red HatJuly 2027 for Amazon CorrettoDecember 2030 for AzulMarch 2031 for BellSoft LibericaSpring Framework 5.3.xSpring boot 2.4.x / 2.5.x / 2.6.x /2.7.xJava SE 11 (LTS)2018/09/25April.. 2024. 8. 4.
Java generic method, 자바 제네릭 메소드 예제, 제네릭 메소드 static 제네릭 메소드란?제네릭 메소드는 메소드의 선언 부에 적은 제네릭으로 리턴 타입과 파라미터의 타입을 정하는 메소드입니다.제네릭메소드의 예제 코드는 아래와 같습니다.public class Test { public T name(S param) { if(param instanceof String) { return param; } return null; } } 부분은 어떤 generic을 쓸 지에 대한 내용입니다.T는 임의의 class, S는 T를 extends한 class여야 함을 명시합니다.T name(S param) 부분에서는 앞선 정의에서 S 클래스를 parameter로 받고,T 클래스의 객체로 리턴한다는 뜻입니다.static generic method, 제네릭 메소드 static먼저, 결론적으로.. 2024. 7. 29.
spring interceptor란, spring custom interceptor 라이브러리 만들기, spring custom interceptor 적용 spring interceptor란, spring boot custom interceptor 라이브러리 만들기, spring boot custom interceptor 적용 spring interceptor란? spring interceptor를 한마디로 정의하면 request를 가로채서 추가적인 로직을 수행할 수 있도록 하는 요소입니다. spring에서의 Interceptor가 있을때의 처리방식은 아래 그림과 같습니다. (Handler Interceptor 부분입니다) client에서 웹서버로 호출 dispatcher servlet을 통해 request를 Handler Interceptor로 넘김. Handler Interceptor의 Prehandle 메소드 로직수행후, Handler -> contr.. 2023. 10. 22.
스프링부트 라이브러리 만들기, spring boot auto configuration, 공통 exception 처리 라이브러리 만들기 스프링부트 라이브러리 만들기, spring boot auto configuration, 공통 exception 처리 라이브러리 만들기 배경 최근에, 여러 spring boot 프로젝트를 개발하는 대형프로젝트를 진행하고 있습니다. 그런데, 각 spring boot에서 공통적으로 코드를 사용하는 부분이 있습니다. 예를 들어, exception 처리와 같은 부분입니다. controller쪽에서 exception을 발생시키면 아래와 같은 json 결과를 http response로 보내고, http status 는 500에러를 발생하고자 하였습니다. {"message":"ERROR_INTERNAL","result":null} 이를 처리하기 위해서는 스프링 부트 프로젝트에 spring boot aop를 적용하여 처.. 2023. 10. 19.
Java UUID란, Java UUID 중복, Java UUID 자리수, Java UUID 길이 줄이기 Java UUID란, Java UUID 중복, Java UUID 자리수, Java UUID 길이 줄이기 Java UUID란? Java UUID란 Universally Unique Identifier의 약어로, 고유 식별자를 나타내는 값입니다. 중복않는 유일한 값을 사용할때 활용합니다. 세션 식별자, 쿠키 값, 무작위 데이터베이스 키 등에 활용가능합니다. Java UUID 활용하기, UUID 사용하기 UUID 생성방식은 아래와 같이 세가지가 있습니다. // 1) 랜덤으로 생성 UUID uuid = UUID.randomUUID(); // 2) string 기반으로 생성 String test = "test"; UUID uuid = UUID.fromString(test);; // 3) byte array 기반으.. 2023. 10. 15.
반응형