작성
·
767
0
밑의 질문에 참고했는데 저는 다른 에러가 떠서 질문에 남깁니다.
전 import hello.hellospring.aop.TimeTraceAop 까지는 잘되어 있는데
빌드 시에는 package hello.hellospring.aop does not exist로 에러가 떠서 구글에 찾으려해도 어떻게 접근을 해야할지 몰라 곤란하네요 ㅠㅠ
package hello.hellospring;
import hello.hellospring.aop.TimeTraceAop;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
@Configuration
public class SpringConfig {
DataSource dataSource;
private EntityManager em;
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
// @Autowired
// public SpringConfig(EntityManager em) {
// this.em = em;
// }
// @Autowired
// public SpringConfig(DataSource dataSource) {
// this.dataSource = dataSource;
// }
@Bean
public MemberService memberService() {
// return new MemberService(memberRepository());
return new MemberService(memberRepository);
}
// @Bean
// public MemberRepository memberRepository() {
// // return new MemoryMemberRepository();
// // return new JdbcMemberRepository(dataSource);
// // return new JdbcTemplateMemberRepository(dataSource);
// // return new JpaMemberRepository(em);
// }
@Bean
public TimeTraceAop timeTraceAop() {
return new TimeTraceAop();
}
}
package hello.hellospring.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;
@Aspect
public class TimeTraceAop {
@Around("execution(* hello.hellospring..*(..)) && !target(hello.hellospring.SpringConfig)")
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
System.out.println("Start : " + joinPoint.toString());
try {
return joinPoint.proceed();
} finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("End : " + joinPoint.toString() + " " + timeMs + "ms");
}
}
}
답변 7
2
SeongBaek CHO님 폴더에 들어가서 확인해보니 파일 이름이
TimeTraceAop.aj로 되어 있었습니다. TimeTraceAop.java로 변경하시면 될꺼에요^^
아마 IntelliJ에서 생성할 때 apetcj로 생성하신듯요.
변경하고 실행하니 잘 동작합니다^^
즐거운 주말 되세요
1
0
0
0
plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
compileOnly("org.springframework.boot:spring-boot-devtools")
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
0
0