
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(); } }