작성
·
92
0
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
[ MyLogger.java ] 코드
package hello.core.common;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.UUID;
@Component
@Scope(value = "request")
public class MyLogger {
private String uuid;
private String requestURL;
public void setRequestURL(String requestURL) {
this.requestURL = requestURL;
}
public void log(String message) {
System.out.println("[" + uuid + "]" + "[" + requestURL + "]" + message);
}
@PostConstruct
public void init() {
uuid = UUID.randomUUID().toString();
System.out.println("[" + uuid + "] request scope bean create:" + this);
}
@PreDestroy
public void close() {
System.out.println("[" + uuid + "] request scope bean close:" + this);
}
}
[ LogDemoController.java ] 코드
package hello.core.web;
import hello.core.common.MyLogger;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequiredArgsConstructor
public class LogDemoController {
private final LogDemoService logDemoService;
private final ObjectProvider<MyLogger> myLoggerProvider;
@RequestMapping("log-demo")
@ResponseBody
public String logDemo(HttpServletRequest request) {
String requestURL = request.getRequestURL().toString();
MyLogger myLogger = myLoggerProvider.getObject();
myLogger.setRequestURL(requestURL);
myLogger.log("controller test");
logDemoService.logic("testId");
return "OK";
}
}
[ LogDemoService.java ] 코드
package hello.core.web;
import hello.core.common.MyLogger;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class LogDemoService {
private final ObjectProvider<MyLogger> myLoggerProvider;
public void logic(String id) {
MyLogger myLogger = myLoggerProvider.getObject();
myLogger.log("service id = " + id);
}
}
[ build.gradle ] 코드
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.2'
id 'io.spring.dependency-management' version '1.1.6'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
//lombok 설정 추가 시작
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
//lombok 설정 추가 끝
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//web 라이브러리 추가
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'jakarta.inject:jakarta.inject-api:2.0.1'
//lombok 라이브러리 추가 시작
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
//lombok 라이브러리 추가 끝
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
ObjectProvider를 사용하면서 부터 CoreApplication을 실행하면 Negative Match 가 뜨면서 아래에
ActiveMQAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'jakarta.jms.ConnectionFactory' (OnClassCondition)
AopAutoConfiguration.AspectJAutoProxyingConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'org.aspectj.weaver.Advice' (OnClassCondition)
이러한 오류들이 뜹니다.
IntelliJ는 무료버전이므로 build and run은 Gradle로 설정해놓은 상태입니다. 어떻게 해야 정상작동할까요...
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
kanghyun님께서 언급한 문제를 해결하기 위해 유사한 기존 답변을 찾아봤습니다. 다음 링크들을 참고해 보시면 해결 방법을 찾는 데 도움이 될 수 있습니다:
uuid가 안찍힙니다 ㅠㅠ
URL: https://www.inflearn.com/questions/505926
MyLogger
클래스에서 uuid
값이 제대로 설정되지 않아 로그가 출력되지 않는 문제를 해결한 사례입니다.스코프와 Provider 강의에서 질문합니다.
URL: https://www.inflearn.com/questions/1108197
request 스코프 관련 문의
URL: https://www.inflearn.com/questions/1288929
그리고 CoreApplication 실행 시 무한 로딩 문제가 발생하는 경우, build.gradle
파일의 구성이나 특정 설정에서 문제가 있을 수 있습니다. 이와 관련된 문제 해결 방법도 다음 질문에서 확인할 수 있습니다:
위 링크들을 통해 상황과 유사한 문제들을 해결한 사례를 확인하시고 적용해보시면 좋겠습니다. 만약 그래도 문제가 해결되지 않는다면, 추가적인 오류 메시지나 상세한 설정 정보를 댓글로 남겨주시면 보다 구체적인 도움을 드릴 수 있을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.