게시글
질문&답변
(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"
솔루션 수정본⚠ 기존 댓글에 정리된 내용이 적절치 않아 삭제 후, 실제 동작하는 방법에 대해 다시 정리합니다.다음은 알려진 OOP 인터페이스 분리 패턴(ISP)을 TS기반 tsyringe 에서 추상클래스를 InjectionToken 으로 사용하는 방법입니다. updates: 24-09-19: InjectionToken 형 변환 시, as InjectionToken 에서 `as InjectionToken 또는 as unknown as InjectionToken 으로 변경 1. extends AbstractClass: 추상클래스를 상속,확장합니다.abstract class Super {} class Impl extends Super {} 2. 구현체 클래스에 @registry([..]) 추가@singleton() // ✅ @registry 에 직접 연관된 부모클래스(추상체)를 지정해야 @inject 를 통해 주입이 가능해집니다. @registry([ { // 💡 tsyringe 는 추상클래스 등록을 지원하지 않아 타입미스매치 애러 발생. // 해결은 unknown as InjectionToken 으로 강제 케스팅 후 등록이 가능함. // 1안 token: Super as InjectionToken, // 또는 2안 token: Super as unknown as InjectionToken, useClass: Impl, }, ]) class Impl extends Super {} 3. 사용export class ConstructorInjectionWithTsyringe { constructor( @inject(Impl) readonly sup: Super, ) {} } 동작확인아래는 질문의 소스코드 디버깅 상황에서 캡쳐된 이미지입니다. 추상클래스 HttpClient 타입 맴버변수에, 구현체 AxiosHttpClient 인스턴스가 정상 주입된 것을 확인할 수 있었습니다.(사진)
- 0
- 2
- 482
질문&답변
ValidationPipe DTO 변환 대신 JS Object 로 변환되는 이유
NestJS 깃헙 이슈 개설해서 한참 소스코드 고치다보니, 어이없이 해결되었는데요,문제가 타입스크립트 에 있고, 원인은 타입스크립트 컴파일 시점에 import/export 파일관계가 꼬였다 라고 볼수밖에 없겠습니다.DTO 클래스 파일 위치를 옮기다보니 index.ts 를 수정하게 되었는데, 이것 때문이라고 추측되었고,확실한 것은 해당 Request 객체를 참조하는 곳에서 tsconfig.json 의 path alias 로 명시된 경로를 직접 상대경로로 바꿔주니, 정상 작동하기 시작했습니다.
- 0
- 2
- 332
질문&답변
캐릭터 초기위치 와 이동을 `style.left` 대신 `translateX` 로 해보려는데 어렵네요..
ㅠㅠ 질문하기 몇일 전부터 쭉 고민하다 내린결론인데요,transform 자체가 2D 기반 API 라서 그런지 에서 3D 공간 구성을 위한 표현자체가 한계가 많은것 같습니다. 제가 근 몇일간 가장 혼란스러웠던 부분은..첫번째- rotate 시 좌표축까지 회전됨그래픽카드 가속력 지원을 받기위해 left top right bottom 없이 translate 만 가지고 적용을 해보다 알았는데요,rotate -90 deg 를 적용하면, 좌표축 까지 돌아가버려서translateX( ? ) 를 적용하려면돌아가버린 축때문에, 대상이 Z 축으로 이동을 하더군요.. 돌아간 축에 따라 이것을 다시 if 분기로 나눠서 translateXYZ 로 각각 값적용을 하려고 했으나,이방법 또한 적절한 방법인지 고민이 되었습니다. 두번째- translateXYZ 로 이동 후, rotate 되면, 그자리에서 rotate 되지않고, translate3D(0, 0, 0) 을 기준으로 회전을 해서 대상이 화면에서 사라집니다.즉, left 나 top 같은 속성으로만 좌표이동이 가능하단 것입니다.또한 z 축으로 이동하려면 위의 "첫번째" 처럼 rotate 가 된 상태로 x 축을 이동하면 되나,기준축이 이동하는것이 아니기 때문에, left 나 top 을 이용해야 합니다.때문에, 이방법 또한 3D 가속을 지원받지 못해 적절하지 않습니다.Canvas 기반이 아닌상태에서 3D 공간구현을 제대로 하려면3D Matrix 4x4 행렬데이터를 기반하여 적용이 되어야 하는 결론에 다달았습니다.이것을 파려니 시간적인 소요가 너무 심해 단순히 끝내려고 예제와 같은 left 속성으로 이동값을 적용후 마무리 지었습니다. 혹시 틀린 부분이 있다면, 조언 부탁드려도 될까요?그리고 혹시 첫 질문에 해결 힌트를 얻을 수 있었으면 좋을것같아요.
- 0
- 1
- 490
질문&답변
package.json 외에 여러 *.config.* 파일을 특정(내/외) 폴더에서 관리하도록 경로 설정이 가능할까요?
답변 감사합니다. 주신 답변을 정리해 보았습니다.package.json 을 제외한주변 *.config.* 파일 들의 Lib 가 xxx.config.* 에 대한 `경로 설정 옵션`이 제공된다면 가능.( Lib 마다 캐바캐 )2. 경로 설정은 보통 설정파일 안에 위치하나, `Config1`경로->> `Config2`경로->> `Config3`의 연관된 경로설정의 형태로는 경로설정 을 할 수는 없다.(추측) package.json 에는 설정할 방법이 없다.결론 : root 안에서 config 들을 관리하는 것이 이로움.제가 잘 이해한건지 모르겠습니다..ㅠ
- 0
- 2
- 576
질문&답변
안녕하세요? 질문 하나 드릴게요.
`웹 계층 컴포넌트` 또는, 이와 연관된`Library 모듈` 모두를 아우르는 표현이 `웹(Spring Web 모듈) 관련` 이라는 표현이라고 이해했습니다. 잘 배우고 갑니다.
- 0
- 3
- 341
질문&답변
jpa로 설계 시
지나가던 차에 타입구분에 대해 짧은견해를 잠깐 적어봅니다.attachFile 과 imageFile 이란 이름은 모두 File 범주에 속하므로, File 엔티티 라는 큰 범주안에 Type 속성으로 구분하면 어떨지 생각합니다.image 는 File 의 종류 를 나타내고, attach 는 용도를 나타내므로, `행위`속성과, `종류`속성으로 나뉘어 구분지어 놓으면 어떨까 생각합니다.도움이 되셨으면 좋겠네요
- 0
- 2
- 307
질문&답변
이번 예제에서 Config 클래스에 @Configuration 을 적용하니, Proxy 래핑/등록이 안되는것 같습니다.
@SpringBootTest 내에 innerClass @Configuration, AOP설정 - 정리 제가 아는 범위내에서 강사님 답변을 토대로 정리했습니다. @SpringBootTest 시, @Configuration 설정 주의사항 @SpringBootTest 작성시, 내부 클래스에 @Configuration 을 선언 했다면, 기존에 작성된 어딘가의 의존성을 찾을수 없다거나, 잘 작동하던 기능이 갑자기 작동을 안하는 것을 경험할 것이다. 이 설정으로 생기는 부수효과는 Spring 라이브러리 설정 및, `src/main`모듈의 설정 전체가 무시된다. 이유는, 내부 클래스에 선언된 @Configuration 클래스 경로가 자동으로 컴포넌트스켄 기본패키지로 지정되기 때문. 만약 `src/main`모듈에 AOP 설정을 해놓은 상태라 가정하면, @Configuration 설정 때문에, 스프링 부트를 통한 AOP관련 설정클래스 들 마저 스프링 빈으로 등록되지 않게 된다.결국, AOP 자체가 동작하지 않게 된다는 것이다. 그렇다면 @SpringBootTest 시점에서기본 Spring-boot 설정을 유지하며( AOP 설정포함) 추가적으로 테스트용 @Configuration 을 설정하는 방법은? 내부 설정클래스에 @EnableAspectJAutoProxy 선언 및, 기존모듈의 basePackage 설정 방식: 이 방식은, 기존`src/main`모듈설정 따로, AOP 설정 따로, 각각 해주어야 하므로 번거롭다. `추천!` - @Configuration ▶ @TestConfiguration 변경(치환)내부 설정클래스에 @TestConfiguration 선언을 통해, 기존 `src/main`모듈의 Spring-boot 설정을 활성화하는 방식.: @SpringBootTest `src/main`전체모듈설정 + 테스트 Config 형태로, 기존설정 기반 + 추가설정이 가능하다. 수정할 부분에 대해 답글 남겨주시면 검토 후, 반영하겠습니다.
- 0
- 4
- 844
질문&답변
이번 예제에서 Config 클래스에 @Configuration 을 적용하니, Proxy 래핑/등록이 안되는것 같습니다.
고맙습니다 강사님! 1. 실행방법 프로젝트 모듈 폴더구조 03-Spring-core-principles-advanced advanced aop proxy 2. 문제 확인 방법 테스트 파일 입니다. : 테스트파일을 오픈해놓은 상태로 보내드렸지만안보이시면, 아래 경로를 통해 Test 를 실행할 수 있습니다. src/test/java/hello.aop.pointcut_expression.AtTarget_AtWithin_Test.java 아래는 해당 테스트 파일 경로 캡쳐입니다.(사진)
- 0
- 4
- 844
질문&답변
Bean 을 특정 Application...Event 발생 후, 등록하는 방법이 궁금합니다
강사님.전혀 다른 방법으로 해결을 봤어요..@Bean 이나, Data INSERT 시점을 변경하는 것은무모했지만, 학습효과는 대단했습니다 ㅎㅎㅎ Data 를 reload 하는 메서드를 Filter 내부에 작성하고/ App..ReadyEvent 핸들러에서 호출 하는 것으로 해결되었습니다. 질문과 자문자답으로, 실마리를 찾은거 같아 참 다행인것같습니다.관심가져주셔서 감사드려요.. 고맙습니다.
- 0
- 3
- 469
질문&답변
서버 기동 후 루트 접근 시 `/` AccessDeniedException 질문입니다
강사님. 해결되었습니다. MetadataSource 에서 reload 메서드 로 DB 데이터 로딩 기능 구현 후, SecurityConfig.java 에서 @ApplicationReadyEvent 리스너 에서 event.getApplicationContext() .getBean() 으로 UrlFilter...MetadataSource 가져온 후 .reload() 를 실행 이런 과정으로, java/resources/data.sql 과 DummyDataLoader 의 데이터 삽입 과정이 끝나고,ApplicationReadyEvent 시점에 UrlFilter...MetadataSource 에서리소스 리로딩 해주는 방식으로 해결을 봤습니다. Bean 을 등록하는 부분 변경이나, DataSource 의 데이터 입력 시점을 변경하는 방법은아무리 찾아도 방법이 없는것으로 보아, 제가 어려운 방법을 택한게 아닌가 싶습니다. 문제 해결을 위해 답글 남겨주셔서 많은 도움이 되었습니다. 정말 감사드립니다.
- 0
- 5
- 565