간단한 로그인 서비스를 만들고 있었는데 다음과 같은 코드에서 에러가 났다.
public Member login(String loginId, String password) {
return memberRepository.findByLoginId(loginId)
.filter(member -> member.getPassword().equals(password))
.orElse(null);
}
error: cannot find symbol
.filter(member -> member.getPassword().equals(password))
^
symbol: method getPassword()
location: variable member of type Member
문제가 없었다. 처음에는 Optional<>에 filter를 붙인게 문제인가 해서 다 뒤져봤지만 문제가 없었다.
그러다가 에러를 자세히 읽어봤는데, Member type까지 잘 인식했는데 왜 getter을 못 찾을까 생각해봤다.
심지어 자동완성도 잘 먹히는데,,,
실마리
그래서 혹시나 하는 마음에 Member 도메인에 가서 @Data를 지우고 Getter/Setter을 직접 생성해 보았다.
결과는 성공...🤯( 아니 롬복 많이쓰는 거 아니었어? 무슨 롬복에서 에러가 나? )라고 생각했다.
그래서 build.gradle에 있는 dependency를 살펴 보았지만,
implementation 'org.projectlombok:lombok'
정상...
annotation enable도 하고 다 했다 안된다.
그러다가 구글링 하다가 발견한 해결책
해결책
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
아래 annotationProcessor을 추가해주라는 말이었다.
하니까 된다.
아래 추가한 것은 Compile 수행시 annotation에 대한 스캔 및 롬복 관련 설정을 해주는 것이라고 한다.
그래도 빠른 시간안에 찾아서 다행이다.
저와 같은 고통을 겪는 분들께 도움을 드리고자 썼습니다.
'SpringBoot > 에러노트' 카테고리의 다른 글
갑작스러운 데이터 베이스 연결 오류 (1) | 2022.11.20 |
---|---|
[mybais 에러] applicationContext.getResource, .getResources 차이 (0) | 2022.11.06 |
[LogBack] logback-spring.xml 설정 실수 (0) | 2022.11.02 |
HandlerInterceptorAdapter - deprecated (0) | 2022.10.31 |
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. (0) | 2022.10.31 |