일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- nestjs auth
- 알고리즘
- Spring
- 스프링
- 카카오 코테
- AWS
- 시스템호출
- 컴포넌트스캔
- spring boot
- 코테
- OpenCV
- 해시
- C++
- 가상면접사례로배우는대규모시스템설계기초
- C언어
- Nodejs
- TypeORM
- @Autowired
- 카카오 알고리즘
- 파이썬
- thymeleaf
- @Component
- python
- 카카오
- 프로그래머스
- 코딩테스트
- git
- nestJS
- nestjs typeorm
- 구조체배열
- Today
- Total
목록# Tech Studies/Java • IntellJ (12)
공부 기록장 💻
보호되어 있는 글입니다.
Shortcut / Action Ctrl+B Go To Declaration Navigate to the initial declaration of the instantiated class, called method, or field. 선언된 특정 인터페이스와 클래스가 다른 곳에서 어떻게 쓰이고 있는지 확인하고자 할 때, Ctrl + B 단축키를 클릭하면 다음과 같이 어디서 import 되었는지, 어디서 필드로 사용되고 있는지 목록을 통해 확인할 수 있다.
iter iter 단축키를 누르면 Iterate Iterable or array 기능을 수행할 수 있다. 위에서 선언된 배열 iteratable 을 참조하여 for-each 구문을 자동적으로 만들어준다. sout, soutv sout 은 System.out.println() 을 자동 완성하여 만들어주는 기능을 한다. 그중에서도, soutv 는 위에서 선언된 변수 variable 을 출력하는 기능을 한다. 아래와 같이 soutv를 사용한 경우, Sytstem.out.println("변수이름 = " + 변수) 와 같은 형태로 sout의 파라미터를 자동적으로 전달하도록 자동완성해준다.
기존에 https://dream-and-develop.tistory.com/358 에서 Spring Boot 프로젝트를 터미널에서 gradlew 명령어를 이용하여 Gradle 빌드 툴을 이용하여 빌드하고, jar 파일을 생성한 바가 있다. 이번에는 IntelliJ IDEA에서 빌드를 하고, jar 파일이 생성되는 과정을 눈으로 확인해보자. 우측의 Gradle 을 클릭하면 다음과 같이 hell-spring 에 대해 Gradle Tool 을 이용해 할 수 있는 작업들(Tasks)가 나타난다. build 디렉터리 내에 여러 작업을 수행할 수 있는 버튼이 있는데 우리는 다음의 순서로 작업을 실행할 것이다. 1) clean 2) build 3) jar 우선 clean을 누르게 되면, 좌측과 같은 프로젝트 구조를 ..
이전과 같이 로컬에서 IntelliJ에서 build한 스프링 프로젝트 애플리케이션을 띄우려 했는데, 다음과 같이 Port 8080 이 이미 사용 중에 있다는 Web server failed to start. Port 8080 was already in use. 라는 설명과 함께 오류가 발생하고 실행 종료가 되었다. 명령 프롬포트 cmd 창을 열어 nestat -ano 명령어를 치고, 로컬 주소에서 어떤 프로세스가 사용 중인지 확인을 해보자. TCP 프로토콜 0.0.0.0:8080 로컬 주소를 확인해보니, PID 3256 번의 프로세스가 실행 중임을 확인할 수 있었다. 이전에 다른 스프링 프로젝트를 실행하는 과정에서 jar 파일을 새로 생성하는 과정에서, 파일 실행을 눌러서 해당 8080 로컬 포트가 실행..
psvm IntellJ에서 class를 만들고, main 메서드를 만들 때 매번 public static void main(String[] args) 를 일일히 타자로 치지 않아도, psvm 이라는 키워드를 치면 main 메서드가 단번에 자동 생성된다.
File > Settings > Keymap 으로 들어가 우측 search box에 원하는 기능을 검색하면, 해당 기능 shortcut의 keymap이 우측에 뜬다. 생성자를 만들기 위한 단축키는 Alt + Insert 으로 나타난다. Member 이라는 회원 클래스에서 Alt + Insert를 누르니 다음과 같이 Delegate Method 하고자 하는 여러 메서드들이 나타난다. Consturctor을 선택하면, 생성자를 초기화할 필드들을 선택하기 위한 작은 창이 뜬다. 전체를 선택하여 생성자를 만들어보자. 아래와 같이, id, name, grade 필드에 해당하는 값을 초기화하는 생성자가 자동으로 완성이 된 것을 확인할 수 있다.
IntelliJ IDEA에서 Spring 프로젝트 Gradle 빌드 툴에 새로운 라이브러리가 추가되거나, 의존성, 플러그인 등이 수정되는 경우 우측 Gradle을 클릭하고, 해당 창 좌측에 나타나는 reload 버튼을 꼭 클릭해주어야 한다. 그래야만 라이브러리들의 의존 관계가 전체 프로젝트에 적용된다.
프로그램을 개발 할 때, 각 메서드를 테스트하기 위한 테스트 케이스를 작성하는 것은 거의 필수적이라 할 수 있다. IntelliJ IDEA에서 Test Class를 만드는 shortcut 단축키 (Ctrl + Shift + T) 기능을 살펴보자. 아래와 같이 MemberService라는 이름의 회원 서비스 클래스 위에서 more actions 를 클릭하면 아래와 같이 Create Test 라는 기능이 목록에 포함되어 있다. 이를 누르면 선택된 클래스에 대한 test case 메서드를 포함하는 클래스를 만들어 준다는 설명이 나타나 잇다. Ctrl + Shift + T 단축키를 누르는 방법도 있다. 그러면 다음과 같이 Testing Library, Class name, Destination package, ..
클린 코드 에 의하면, 하나의 메서드가 하나의 기능만 구현하도록 코드를 명료하게 작성해야 한다. Java에서 메서드를 작성할 때, 길이가 길어지며 여러 기능이 포함되는 경우 하나의 기능을 하는 작은 단위를 다른 메서드로 분리할 필요가 있다. 다음의 회원 가입 예제를 살펴 보자. join() 메서드 내에서는 현재 같은 이름이 있는 중복 회원이 생기는 것을 방지하기 위한 두 줄의 코드가 포함되어 있다. 이 때 우리는 해당 코드를 "가입하려는 회원 member과 동일한 name 을 갖고 있는 회원이 데이터베이스에 있는지 확인" 하는 기능을 담당하는 메서드로 따로 추출하고자 한다. 따로 메서드로 분리하려는 코드를 드래그하면 다음과 같이 Extract method 기능이 나타난다. 단축키는 Ctrl + Alt +..
반환 값을 가지는 메서드를 다른 곳에서 호출하게 되는 경우, 리턴값을 받기 위한 지역 변수를 선언해야 하는데 IntelliJ IDEA에서 이를 자동적으로 실행해주는 단축키를 제공하고 있다. 아래와 같이 회원 가입 메서드인 join() 에서 회원 가입하고자 하는 member 의 name을 가진 회원이 데이터베이스에 저장되어 있는지 확인하는 memberRepository의 findByName() 을 호출하는 코드가 첫 줄에 작성되어 있다. (findByName() 메서드는 Optional 객체를 반환하는 메서드이다.) 객체를 받아 이것이 null 값인지, 또는 member 객체 값을 갖고 있는지 확인하기 위해 Optional 변수에 담아주어야 하는 상황이다. 이때, 해당 메서드가 반환형을 갖고 있는 메서드이..
클래스 내에서 getter와 setter을 어떻게 빠르고 쉽게 만들 수 있을까? 결론부터 말하자면 Alt + Insert 단축 키를 통해 빠르게 getter, setter 관련 메서드를 생성할 수 있다. 다음과 같이 Hello 라는 정적 클래스 내에 name이라는 String 변수를 만들었다. Alt + Insert 단축키 클릭 시 다음과 같이 자동으로 Generate 가능한 생성자, 메서드 들이 나타난다. Getter and Setter을 선택해보면 다음과 같이 나타난다. 이를 클릭하고 나면 아래와 같이 자동적으로 name 변수에 대한 getter, setter 메서드인 getName(), setName()이 자동적으로 추가된다. 이번에는 int형 number 변수를 선언한 뒤 getter와 sette..