min12
70
2022-07-30 23:13:51
2
85

빌던 패턴 오류


처음으로 빌더 패턴을 사용하게 되었는데 자꾸 빨간 줄이 가고 인텔리제이에서 제공하는 팁을 사용해도 똑같이 빨간 줄이 계속 있더라구요.. 좀 많이 거슬리기도 하고 왜 빨간 줄이 가능것 인지 모르겠어서 질문에 올립니다!

현재 인텔리제이를 사용 중입니다



요건 User레포지토리 클래스입니다

public interface UserRepository extends CrudRepository<User, Long> {

Optional<User> findByUserid(String userid);

boolean existsByUserid(String userid);
}


요건 User 엔티티 클래스 입니다.

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class User extends BaseIdEntity {
@NotNull
@Column(length = 20)
private String username;

@NotNull
@Column(length = 15)
private String password;

@NotNull
@Column(length = 20, unique = true)
private String userid;

@NotNull
@Column(length = 6)
private Integer number;

@Column(columnDefinition = "TEXT")
private String introduce;

@NotNull
private String major;



@Builder
public static User createUser (String username, String password, String userid, Integer number, String introduce, String major, PasswordEncoder passwordEncoder) {
User user = new User();
user.username = username;
user.password = password;
user.userid = userid;
user.number = number;
user.introduce = introduce;
user.major = major;
return user;
}

public void changeInfo(String username, Integer number, String major, String introduce) {
this.username = username;
this.number = number;
this.major = major;
this.introduce = introduce;
}
}


요건 서비스 클래스입니다

public interface UserService {

void signUp(SignUpRequest request);
}


문제의 그 빨간 줄 부분  User user = 이 부분 빼고 userRepository 부분 부터 끝까지 전부 빨간 줄이 쳐지는 상태 입니다.

@RequiredArgsConstructor
@Service
public class UserServiceImpl implements UserService {

private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;


@Transactional
public void signUp(SignUpRequest request) {

String username = request.getUsername();
String userid = request.getUserid();
String password = passwordEncoder.encode(request.getPassword());
Integer number = request.getNumber();
String introduce = request.getIntroduce();
String major = request.getMajor();

if (userRepository.existsByUserid(request.getUserid())) {
throw ConflictException.EXCEPTION;
}

User user = userRepository.save(User.builder()
.username(username)
.userid(userid)
.password(password)
.number(number)
.introduce(introduce)
.major(major)
);

}
}


0
  • 답변 2

  • 카카오콘
    1k
    2022-07-30 23:18:42

    1. UserEntity 내에 createUser에 Builder은 왜 사용하신건가요?


    2. User.builder()....major(major).build();

  • javavoa
    409
    2022-07-31 13:00:33

    카카오콘

    윗분말대로 해당메소드에 Builder 는 필요없을것같아서

    createUser메소드에 Builder어노테이션을 제거하시고

    사용하셔도 될것처럼 보입니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.