300x250
반응형

Back-End/Spring 67

[SpringBoot] Springboot + JWT 이용하여 API 서버간 인증하기

Springboot로 샘플 프로젝트를 2개 만들었다. 하나는 API를 호출하는 역할을 하는 A 프로젝트, 다른 하나는 A로부터 호출을 받아 값을 주는 역할을 하는 B 프로젝트. B 서버는 전형적인 API 서버라고 생각하면 된다. jwt api 서비스 인증 이런 과정에 대해 샘플을 만들고 테스트를 할 것이다. 환경 구성 (A, B 프로젝트 공통) pom.xml org.springframework.boot spring-boot-starter-web io.jsonwebtoken jjwt 0.9.1 기본적으로 필요한 dependency는 spring-boot-starter-web과 jjwt가 필요하다. jjwt는 java json web token 인걸로 알고 있다. application.yml (A, B 프로..

Back-End/Spring 2023.06.26

[SpringBoot] ChatGPT와 연동하기

springboot 에서 chatGPT API를 연동해보겠습니다. 생각보다 어렵지 않으니 순서대로 따라오시면 됩니다. 우선 chatGPT API 를 이용하기 위해 API-KEY가 필요합니다. https://platform.openai.com/account/api-keys OpenAI API An API for accessing new AI models developed by OpenAI platform.openai.com 링크를 따라 들어가면, 로그인 해야할겁니다. 로그인 후 위에 링크를 다시 들어가면, 아래에 + Create new secret key 를 발급 받으실 수 있습니다. 추후에 api 사용을 위한 api-key 이니, 알고계셔야 합니다. 이제 프로젝트를 생성해봅시다. id 'org.sprin..

Back-End/Spring 2023.06.23

[SpringBoot] static resource ERR_ABORTED 404 오류

springboot를 사용해서 web 개발을 하면 초반에 ERR_ABORTED 404를 심상치 않게 만나볼 수 있다. 404는 알다시피 경로에 있는 파일을 못찾는 경우이다. 즉 잘못된 경로를 입력했다는 것이다. static resource 구조 필자의 static resource 구조와 그 안에 있는 js 파일에 대한 정의를 한 소스이다. springboot의 특성상 정적자원을 읽어오는 위치는 classpath:/static, classpath:/public, classpath:/resources 이어야 한다. public이라는 폴더명을 선택하여 사용하였다. 위에 나온것중 아무거나 써도 무방하다. 내가 만약 /public/images/abc.png 라는 파일을 접근하고 싶다면 localhost:8080/..

Back-End/Spring 2023.06.23

[SpringBoot] 기동시 Failed to scan : FileNotFoundException *.jar 오류

프로젝트 변경사항이 있어서 BootApplication.java (springboot main class)의 위치를 변경하였다. 변경하고 나니 다음과 같은 오류가 발생을 했다. WARNING: Failed to scan [file:/C:/Users/tester/.m2/repository/com/sun/xml/ws/jaxws-rt/2.1.7/jaxws-api.jar] from classloader hierarchy java.io.FileNotFoundException: C:\Users\tester\.m2\repository\com\sun\xml\ws\jaxws-rt\2.1.7\jaxws-api.jar (The system cannot find the file specified) at java.util.zi..

Back-End/Spring 2023.06.23

[Springboot] SolrServerException 발생 with actuator

스프링부트에 actuactor적용하다가 다음과 같은 에러메시지가 발생했다. 해당 프로젝트에서는 스프링부트 버전 2.1.0.REALSE를 사용하고 있다. org.apache.solr.client.solrj.SolrServerException: Server refused connection at: http://127.0.0.1:8983/solr at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:650) at . . . java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Th..

Back-End/Spring 2023.06.23

[Spring] 스프링 의존성 주입 (Dependency Injection) 개념 및 종류

오늘은 Spring 프레임워크의 DI (의존성 주입, Dependency Injection)에 관해 공부를 하면서 정리를 해보도록 하겠습니다. 1. DI(의존성 주입)이란? Spring Dependency Injection이란, 각 객체 간 의존관계를 스프링 컨테이너가 개발자가 정의한 Bean 등록 정보를 바탕으로 자동으로 주입해주는 기능입니다. 일반적인 다양한 기존 스프링 프로젝트를 보면, Controller에서 Service나 Repository 객체를 사용 시, new 키워드를 통해 컨트롤러에서 객체를 직접 생성하여 사용하지 않고 의존성 주입을 통해 스프링 컨테이너에 생성된 객체를 받아 사용하고 있는 것을 볼 수 있습니다. @Component, @Service, @Repository, @Contro..

Back-End/Spring 2023.06.23

[SpringBoot] Spring Boot Access Log 요청 호출 수, 응답시간 또는 사이즈 순으로 통계 (Linux Shell Script 활용)

여러 API URI 혹은 페이지를 가지고 있는 스프링부트 애플리케이션의 액세스 로그 (Access Log)를 통해 시간당 혹은 분당 URL별 호출 수 (호출량)를 통계 낸다거나, 특정 시간 대 응답 시간이 가장 긴 호출 혹은 응답 사이즈가 큰 호출의 랭킹을 조사하는 등 간단하게 통계를 내야 하는 경우가 생겨서 정리를 해보려고 합니다. 다른 모니터링 툴이나 다른 방법이 있겠지만 여기서는 Embedded Tomcat을 활용한 간단한 Spring Boot 어플리케이션의 경우 Tomcat Access Log와 서버의 리눅스 쉘 스크립트를 통해서 아주 간략히 통계를 내는 방법을 정리해보도록 하겠습니다. Access 로그 예시 먼저 위와 같은 여러 URL과 다양한 파라미터를 가진 Rest API 스프링부트 애플리케..

Back-End/Spring 2023.06.23

[JPA] 발생할 수 있는 여러 오류들

매핑 충돌 오류 org.hibernate.DuplicateMappingException JPA는 Entity를 관리합니다. Entity 등록은 클래스에 @Entity를 붙여서 이뤄집니다. @Entity(name="~")로 name 속성을 가집니다. name 속성을 생략하면 클래스명으로 JPA가 관리합니다. 만약 다른 패키지에 동일한 이름의 Entity로 설정한 클래스가 있다면 이러한 오류가 발생합니다. 따라서 name속성에 패키지명까지 붙여서 지정해주는 것이 좋습니다. hibernate.hbm2ddl.auto 관련 resources/META-INF/persistence.xml에서 application 실행 시에 DB 테이블을 자동으로 생성하는 옵션을 아래처럼 지정할 수 있습니다. 이렇게 설정해 두면 원하..

Back-End/Spring 2023.03.22

[SpringBoot] Embedded Tomcat 세션 클러스터링

SpringBoot를 내장 톰캣으로 실행하고 만약 세션을 사용한다면 세션 클러스터링 설정이 필요하다. 토큰이나 Redis를 사용하는 경우에는 불필요하겠지만 내장 톰캣의 세션을 그대로 이용한다면 세션 클러스터링을 통해 세션 공유 설정을 해야지만 여러 대의 was로 서비스가 가능할 것이다. 테스트 환경 - SpringBoot 2.6.7, Tomcat 9.0.62, JDK 11 1. 의존성 설정 먼저 build.gradle에 tomcat-catalina-ha를 의존성으로 추가한다. implementation 'org.apache.tomcat:tomcat-catalina-ha:9.0.62' 2. Java Config 설정 @Configuration을 통해 내장 톰캣에 대한 세션 클러스터링 Java Config ..

Back-End/Spring 2023.03.21

[SpringBoot] 배송조회 API 추천

현재 개발중에 유용하게 사용중인 배송추적 API가 있어 소개드립니다. 저는 Java에서 따로 호출하여 사용중인데, JavaScript 페이지도 공유되어 있어서 올려드립니다. 제가 사용중인 Java code는 아래에 따로 추가했습니다. 출처 및 원글 : https://tracker.delivery/guide 링크형 배송조회 페이지를 팝업 형태를 띄우고 싶다면 아래와 같은 방식으로 코드를 넣으시면 됩니다. 배송조회 API형 제공되는 웹 페이지를 이용하지 않고 Restful API에 직접 접근하여 데이터를 가져올 수 있습니다. 택배사 목록 조회 API GET https://apis.tracker.delivery/carriers [ { "id": "de.dhl", "name": "DHL", "tel": "+82..

Back-End/Spring 2023.03.21
300x250
반응형