전체 글

Front

[tsyringe] @inject

tsyringe는 TypeScript용 의존성 주입(DI) 라이브러리이다.이 라이브러리를 사용하면 클래스를 좀 더 모듈화하고 코드의 테스트 가능성을 높일 수 있다.@inject는 tsyringe에서 제공하는 데코레이터 중 하나로 의존성을 주입할 때 사용된다. 이 데코레이터는 클래스의 생성자에 특정 의존성을 주입할 수 있도록 도와준다. 주로 의존성을 수동으로 연결하는 대신 자동으로 해당 의존성을 연결해 준다.@inject의 주요 기능:특정 토큰 또는 클래스 주입: @inject를 사용하면, 생성자나 클래스에 필요한 의존성을 주입할 때 주입할 객체를 직접 지정할 수 있다. 이때 주입할 의존성은 클래스 자체나 다른 키(Token)로 지정할 수 있다.[기본 사용 예시]import { injectable, inj..

프로젝트/chaelog

@PreAuthorize

게시글을 삭제할 수 있는 권한을 주기위해 spring security의 커스텀 권한 평가기를 만들어 @PreAuthorize를 사용하려고 했다.[ChaelogPermissionEvaluator]@Slf4j@RequiredArgsConstructorpublic class ChaelogPermissionEvaluator implements PermissionEvaluator { private final PostRepository postRepository; @Override public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) { return f..

Spring/Security

Servlet Filter와 Spring Security Filter의 차이

두 필터 모두 웹 애플리케이션에서 요청과 응답을 가로채고 처리하는 데 사용되지만, 목적과 사용 방식에 따라 중요한 차이점이 있다.1. Servlet FilterServlet 필터는 Java Servlet API의 일부이며, 웹 애플리케이션의 모든 요청과 응답을 전역적으로 처리하는 데 사용된다. Servlet 필터는 클라이언트가 서버에 요청을 보내고, 서버가 응답을 반환하기 전에 요청과 응답을 가로채어 처리할 수 있다. 특징:요청 및 응답 수정: 요청이나 응답의 헤더를 수정하거나, 데이터를 추가 및 제거할 수 있다.공통 로직 처리: 인증, 로깅, 인코딩 처리, 캐싱 같은 공통 작업을 수행한다.체이닝 가능: 여러 필터가 체이닝될 수 있으며, 필터 간의 순서가 중요할 수 있다.애플리케이션의 모든 요청에 적용:..

프로젝트/chaelog

Spring 디버깅 시 PolicyUtil

줄곧 잘되던 디버깅이 갑자기 안 되더니PolicyUtil에서 IllegalArgumentException("Null KeyStore name")이 계속해서 발생하였다. 이는 가끔 워크스페이스의 metadata 등의 정보들이 충돌을 일으키면서 발생한다고는 하는데 워크스페이스를 다시 만들어보니 해결되었다.

Spring/Spring boot

@PathVariable name 생략시 에러

프로젝트 도중 jakarta.servlet.ServletException: Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 에러가 발생했는데 주로 @PathVariable와 @RequestParam 두 에노테이션에서 발생한다고 한다. //작동 @GetMapping("/posts/{postId}") public PostRespons..

프로젝트/chaelog

[Spring Docs] URI port를 8080아닌 443 지정

URI 포트를 8080이 아닌 443으로 지정하는 이유는 주로 웹 서비스의 통신 프로토콜이 HTTP에서 HTTPS로 전환될 때 발생합니다. 이는 보안, 표준 준수, 사용자 경험 등 여러 이유로 중요합니다. 다음은 443 포트를 사용하는 주된 이유들입니다.1. 보안 강화HTTPS 프로토콜: 443 포트는 HTTPS에 기본적으로 할당된 포트입니다. HTTPS는 HTTP에 SSL/TLS 보안 계층을 추가하여 데이터의 암호화를 지원합니다. 이로 인해 데이터의 무결성과 기밀성이 보장되며, 중간자 공격(man-in-the-middle attacks)으로부터 보호받을 수 있습니다.데이터 암호화: 클라이언트와 서버 간에 전송되는 모든 데이터가 암호화되므로, 개인 정보, 금융 정보, 기타 중요한 데이터가 제3자에 의해 ..

Front

[Vue] intellij 실행

1. vue create 명령사용 목적: 이 명령은 Vue CLI를 사용하여 새로운 Vue.js 프로젝트를 생성합니다. Vue CLI는 풍부한 기능을 제공하고, 복잡한 프로젝트 설정과 여러 빌드 설정을 지원합니다.버전: vue create는 Vue 2와 Vue 3 프로젝트 모두를 생성할 수 있으며, 생성 시에 버전 선택이 가능합니다.특징:사용자가 프로젝트의 구성을 세밀하게 제어할 수 있습니다.웹팩 설정, Babel, TypeScript, ESLint, 등의 다양한 통합 옵션을 제공합니다.프리셋을 통해 자주 사용하는 플러그인과 구성을 저장하고 재사용할 수 있습니다.2. npm init vue@latest 명령사용 목적: 이 명령은 npm의 create 스크립트를 사용하여 최신 Vue 3.x 버전으로 프로젝..

Spring

[Spring] 단위테스트에서 MockBean과 Autowired의 차이

@Mock 어노테이션과 @Autowired 어노테이션은 각기 다른 목적으로 사용되며, 테스트할 대상과 테스트의 맥락에 따라 적합한 어노테이션을 선택하는 것이 중요하다.여기서 서비스 테스트와 컨트롤러 테스트의 차이점을 고려할 때 각각에 사용되는 어노테이션의 목적이 좀 더 명확해진다.@Mock 어노테이션목적: @Mock은 Mockito 프레임워크에서 제공하는 어노테이션으로, 지정된 클래스의 모의 객체(mock object)를 생성한다. 이 모의 객체는 실제 객체의 동작을 흉내 내지만, 실제 코드를 실행하지는 않으므로 외부 시스템이나 데이터베이스 호출 없이 테스트를 진행할 수 있다.사용하는 곳: 주로 서비스 계층(Service Layer)의 테스트에 사용된다. 서비스 계층은 데이터 접근 계층(DAO/Repos..

챛채
챛 Development Log