alt + insert (generator 여는 단축키)

Category
스터디노트 Spring
Status
Published
Tags
단축키
Spring
Description
Published
Slug
notion image

Alt + Insert

Alt + Insert는 IntelliJ의 "Generate" 메뉴를 여는 단축키

Alt + Insert로 생성할 수 있는 모든 것

기본 Generate 메뉴

Alt + Insert 누르면 나타나는 메뉴: ┌─────────────────────────────────────────┐ │ Constructor │ ← 생성자 │ Getter │ ← Getter 메소드 │ Setter │ ← Setter 메소드 │ Getter and Setter │ ← Getter/Setter 둘 다 │ equals() and hashCode() │ ← equals, hashCode 메소드 │ toString() │ ← toString 메소드 │ Override Methods... │ ← 부모 메소드 재정의 │ Implement Methods... │ ← 인터페이스 메소드 구현 │ Delegate Methods... │ ← 위임 메소드 │ Test... │ ← 테스트 클래스/메소드 │ Copyright │ ← 저작권 주석 └─────────────────────────────────────────┘

각 기능별 상세 설명

1. Constructor (생성자)

public class User { private String name; private int age; // Alt + Insert → Constructor public User(String name, int age) { this.name = name; this.age = age; } }

2. Getter (게터 메소드)

public class User { private String name; // Alt + Insert → Getter → name 선택 public String getName() { return name; } }

3. Setter (세터 메소드)

public class User { private String name; // Alt + Insert → Setter → name 선택 public void setName(String name) { this.name = name; } }

4. Getter and Setter (둘 다)

public class User { private String name; private int age; // Alt + Insert → Getter and Setter → 필드 선택 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }

5. equals() and hashCode()

public class User { private String name; private int age; // Alt + Insert → equals() and hashCode() @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return age == user.age && Objects.equals(name, user.name); } @Override public int hashCode() { return Objects.hash(name, age); } }

6. toString()

public class User { private String name; private int age; // Alt + Insert → toString() @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } }

인터페이스/상속 관련

7. Override Methods (메소드 재정의)

public class MyList extends ArrayList<String> { // Alt + Insert → Override Methods... @Override public boolean add(String s) { System.out.println("Adding: " + s); return super.add(s); } }

8. Implement Methods (인터페이스 구현)

public class UserServiceImpl implements UserService { // Alt + Insert → Implement Methods... @Override public User findById(Long id) { // 구현 내용 return null; } @Override public void save(User user) { // 구현 내용 } }

테스트 관련

9. Test (테스트 생성)

// UserService 클래스에서 Alt + Insert → Test... // → 자동으로 UserServiceTest 클래스 생성 public class UserServiceTest { @Test void findById() { // 테스트 코드 } @Test void save() { // 테스트 코드 } }

Spring Boot에서의 활용

Entity 클래스 완성하기

@Entity public class User { @Id @GeneratedValue private Long id; private String name; private String email; // 1. Alt + Insert → Constructor (기본 생성자) protected User() {} // 2. Alt + Insert → Constructor (name, email) public User(String name, String email) { this.name = name; this.email = email; } // 3. Alt + Insert → Getter and Setter // 4. Alt + Insert → equals() and hashCode() // 5. Alt + Insert → toString() }

Controller 클래스

@RestController public class UserController { private UserService userService; // Alt + Insert → Constructor (userService 주입) public UserController(UserService userService) { this.userService = userService; } }

상황별 사용법

필드 추가 후 즉시 생성

public class Order { private Long id; private String productName; private int price; // ← 새 필드 추가 // 기존 생성자 있을 때 // Alt + Insert → Constructor → 새로운 생성자 추가 또는 기존 수정 }

빠른 DTO 생성

public class UserDto { private String name; private String email; // 한번에 모든 것 생성하는 순서: // 1. Alt + Insert → Constructor // 2. Alt + Insert → Getter and Setter // 3. Alt + Insert → equals() and hashCode() // 4. Alt + Insert → toString() }

고급 활용법

선택적 필드 생성자

public class User { private Long id; // DB 자동생성 - 생성자에서 제외 private String name; // 필수 private String email; // 필수 private String phone; // 선택사항 - 생성자에서 제외 // Alt + Insert → Constructor → name, email만 선택 public User(String name, String email) { this.name = name; this.email = email; } }

Builder 패턴과 조합

public class User { private String name; private String email; // Alt + Insert → Constructor (private으로 변경) private User(String name, String email) { this.name = name; this.email = email; } // Builder 패턴 수동 추가 public static UserBuilder builder() { return new UserBuilder(); } }