반응형

전체 글 44

actuator사용시 Swagger 3.0과 충돌하는 현상 해결법

현상 Spring Boot 2.6.x 이상 버전에서 swagger 를 사용하고자 할 시 "failed to start bean 'documentationpluginsbootstrapper'; nested exception is java.lang.nullpointerexception" 에러가 발생하며 스프링 부트 기동이 불가능한 현상이 발생함. 원인 Springfox는 Spring MVC가 경로를 찾게 하기 위하여 Ant-based Path Macther를 사용하도록 하고 있습니다. 2.6.x 이상의 버전부터 해당 matcher를 Path Pattern-based Macther로 변경하여 필요한 클래스를 찾지 못하게 되어 발생하는 현상 입니다. 인터넷을 찾아보면 아래의 코드를 application.yml에..

개발/java 2023.05.03

FAT32 직접 분석하기

FAT32 구조는 자료가 많으니 생략하고, 직접 원하는 파일을 찾아가 보는 실습을 하겠습니다. 루트 디렉토리에서 클러스터 번호를 찾습니다. 클러스터 번호는 High 클러스터 2바이트와 Low 클러스터 2바이트로 나누어져 있습니다. 21~22 바이트가 High 클러스터 2바이트고, 27~28바이트가 Low 클러스터 2바이트 입니다. 즉 00000726 클러스터 인덱스를 갖습니다. FAT1 영역으로 가서 클러스터 번호를 찾아보겠습니다. 4바이트 단위로 나누어 클러스터 번호를 구분합니다. 단 인덱스 0~1번째 클러스터는 Media Type과 Cluster State로 예약되어 있습니다. 3번부터 Root Directory로 시작하게 됩니다. 해당 인덱스에는 다음 클러스터 인덱스 번호가 적혀 있으며, FFFFF..

카테고리 없음 2023.05.03

gradle 빌드시 plain .jar파일 제외하기

gradle 빌드시 plain.jar 파일이 같이 나오는 경우가 있는데, 이런 경우에는 application.xml 파일에 아래와 같은 코드를 추가해 주면 생성을 방지 할 수 있습니다. jar { enabled = false } 그렇다면 plain.jar 파일은 무엇이며 왜 생성되는 것일까요? plain.jar 파일은 의존성을 모두 제외하고 실제 작성한 클래스 및 리소스 파일만 포함된 파일입니다. 그러므로 실제 plain.jar 파일을 이용하여 실행하면 의존성 에러가 발생하게 됩니다.

개발/java 2023.05.03

클래스 기반 컴포넌트 인터페이스 선언 시 초기화하기

프리미티브 타입의 데이터는 임의의 데이터로 초기화할 수 있지만, 인터페이스로 타입을 갖는 데이터에 대한 초기화를 하는 방법에 대해서 몰라서 조사하던 과정에서 다음과 같은 방법을 알게 되었습니다. surveyForm: ISurvey = null as unknown as ISurvey; 인터페이스 타입으로 null 값으로 초기화 한 후 created 시점에서 초기화 시켜주면 되겠습니다.

개발 2023.05.03

Vue Class based component 클래스 기반 컴포넌트에서 Vuex store 설정

class based component로 vue를 작성하던 중 vuex store를 이용하는 방법에 대해서 찾아보게 되었습니다. 클래스 기반 답게 변수 선언 후 호출하는 형태로 이용 가능합니다. /** * 공통 스토어 */ @Module({ namespaced: true }) export default class Common extends VuexModule { // 타이틀 title = ""; /** * 타이틀 조회 * @return 타이틀 */ getTitle():string { return this.title; } /** * 타이틀 설정 * @param title 타이틀 */ @Mutation public setTitle(title: string): void { this.title = title; ..

개발 2023.05.03

typescript를 통한 Axios 클래스 초기화

import axios, {AxiosInstance} from 'axios' import { auth } from '@/utils'; /** * Axios */ class Axios { // 인스턴스 static instance: AxiosInstance | null = null; /** * 싱글톤 인스턴스 */ static getInstance() { // 인스턴스가 없으면 생성 if(!this.instance) { // 인스턴스 생성 this.instance = axios.create({ baseURL: process.env.VUE_APP_SERVER_URL, timeout: 3000, withCredentials: true, headers: { "Access-Control-Allow-Origin":..

개발 2023.05.03

스프링부트 CORS 클래스 설정 방법

Spring boot에서 CORS를 설정하고 싶을 경우 아래 처럼 설정 클래스를 정의하면 됩니다. Mapping 옵션으로 상세 설정을 할 수 있으며, origin은 String 배열 형태로 복수 지정 가능합니다. import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * Web 설정 ..

개발/java 2023.05.03

스프링부트(Springboot) 인터셉터 설정하기

스프링 부트에서 인터셉터를 사용하고 싶을 경우 아래의 내용으로 설정 클래스를 만들어 주면 됩니다. import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * 인터셉터 설정 */ @Configuration public class InterceptorConfig imp..

개발/java 2023.05.02

NPM 프라이빗 레포지토리 설치

Nexus 같은 private repository에서 패키지를 다운로드하기 위해서 인증 절차가 필요한 경우는 아래와 같은 설정이 필요합니다. 직접 계정 설정하기 계정:비밀번호’ 의 해시를 생성합니다. 우선 "계정:비밀번호"의 해시를 생성합니다. echo -n 'admin:admin123' | openssl base64 생성된 해시를 .npmrc 파일에 넣어주세요. registry=http://아이피:8081/repository/npm-group/ _auth=YWRtaW46YWRtaW4xMjM= .npmrc 파일에 해시를 추가했다면 npm install로 패키지를 설치하면 됩니다. 계정 생성하기 npm 명령어로 계정을 생성해 준 후 npm install로 패키지를 설치할 수 도 있습니다. npm addus..

개발 2023.05.02

MongoDB database.collection is not a function 에러 해결 방법

구글링 해보니 스택오버플로우에 다음과 같이 몽고 디비 2.0 대에서 3.0으로 바뀌면서 드라이버 설정 하는 법이 변경되어서 발생하는 것 같다. 몽고 디비 2.0에서는 MongoClient.connect('mongodb://localhost:27017/mytestingdb', (err, db) => { // Database returned }); 이런 식으로 사용할 DB를 명시해서 사용했었는데 몽고 디비 3.0에서는 MongoClient.connect('mongodb://localhost:27017', (err, client) => { // Client returned var db = client.db('mytestingdb'); }); 이런 식으로 바뀐 모양이다. The close() method has..

개발/db 2023.05.02
반응형