반응형

1. Jar 파일 생성하기

1. File > Project Structure

 

2. Artifacts > + 버튼 클릭 > JAR > From modules with dependencies...

 

 

3. Main Class - Jar 실행 파일을 생성할 경우 Main Class 선택 / 외부 추가용 Jar 파일 생성할 경우 생략

    

 

4. 위 2번 순서에 Output directory 위치에 Jar 파일 생성

 

 

2. 외부 Jar 파일 추가해서 사용하기

Spring Boot 프로젝트에 위에서 생성한 printjar 파일을 외부 jar 파일로 추가해서 사용해 보도록 하겠습니다.

 

위에서 생성한 printjar 파일 내부 클래스

package lib;

public class PrintJarMain {

    public static void print() {
        System.out.println("PrintJar Call!!");
    }

    public void test() {
        System.out.println("test");
    }


}

 

1. File > Project Structure

 

 

2. Modules > main > + 버튼 클릭 > JARs or Directories... > 위에서 생성한 printjar 파일 선택

 

3. Main 함수

  - 외부 jar로 추가한 printjar 내부 클래스의 메소드 호출

@SpringBootApplication
public class AopApplication {

    public static void main(String[] args) {

        PrintJarMain printJarMain = new PrintJarMain();
        System.out.println("<<<<<===============>>>>>>>>>");
        printJarMain.print();
        System.out.println("<<<<<===============>>>>>>>>>");
        printJarMain.test();
        System.out.println("<<<<<===============>>>>>>>>>");
        SpringApplication.run(AopApplication.class, args);
    }

}

 

4. 결과

<<<<<===============>>>>>>>>>
PrintJar Call!!
<<<<<===============>>>>>>>>>
test
<<<<<===============>>>>>>>>>

728x90
반응형
반응형

개발하다 보면 html 파일을 수정할 때마다 서버를 재시작하는 일은 매우 번거롭다.

개발 생산성을 높이기 위해서 Spring Boot에서는 Spring Boot Devtools 모듈을 제공하여 개발 시 유용한 기능들을 제공한다.

Intellij에서 Spring Boot Devtools 의존성을 추가하였지만, 소스코드가 바로 적용이 안되시는 분들을 한 번 따라 해보면 좋을 것 같다.

 

대표적인 기능

  - Automatic Restart : classpath에 있는 파일이 변경될 때마다 감지하여 애플리케이션을 자동으로 재시작해준다.

  - Live Reload : 정적 자원(html, css, js) 수정 시 새로고침 없이 바로 적용할 수 있다.

  - Property Defaults : Thymeleaf는 기본적으로 성능을 향샹시키기 위해서 캐싱 기능을 사용한다. 이 캐싱 기능을 false 값으로 설정하여 수정한 소스가 바로 반영되어지도록 적용할 수 있다.

 

세팅 환경

  - IntelliJ IDEA 2021.3.1 (Ultimate Edition)

  - SpringBoot 2.6.6 

  - gradle

 

Spring Boot Devtools 적용

1. build.gradle에 dependencies 추가

 

developmentOnly 'org.springframework.boot:spring-boot-devtools'

 

2. Preferences > Build, Execution, Deployment > Compiler > Build project automatically 체크

 

 

2. Preferences > Advanced Settings > Compiler > Allow auto-make to start even if developed ... 체크

 

 

3. Edit Configurations...

 

 

4. Modify options

 

 

5. On 'Update' action > Update classes and resources 체크

 

 

6. On frame deactivation > Update classes and resources 체크

 

 

7.  Modify options 확인

 

 

* 설정을 하나씩 추가해 보며 소스코드가 적용이 되는지 확인해 보면 좋을 것 같다. 

  나 같은 경우 브라우저 새로고침을 2번 해야지 html 소스코드가 적용이 되었는데 6번(프레임 비활성 시 클래스 및 리소스 업데이트를 체크)을 적용했더니 새로고침 한 번에 바로 적용이 되었다.

728x90
반응형
반응형

코드를 점진적으로 개선하기

 

목차

1. 책의 예제

2. 점진적으로 개선하기

3. IDE를 활용해 점진적으로 개선하기


1. 책의 예제

명령형 인수 구문 분석기

코드 초안

  - 모든 로직이 하나의 클래스에 들어가있다.

  - 처음부터 지저분한 코드를 짜려는 생각은 없었고, 코드를 어느정도 손봤지만 새로운 인수 유형이 들어오면서 재양이 시작됐다.

  - 이제는 개선해야 할 때라는 걸 깨닫고, 변경 전후 시스템이 동일하게 돌아간다는 사실을 확인하기 위해 테스트들을 작성해뒀다.

  - 자잘하게 점진적으로 개선해나갔다.

 

코드 완성본

  - Args 클래스에서 코드 중복을 최소화하고, ArgsException 클래스를 분리했다. ArgumentMarshaler 클래스를 통해 여러 인수에 대한 추후 확장성을 만들어냈다.

  - 코드만 분리해도 설계가 좋아진다. 관심사를 분리하면 코드를 이해하고 보수하기 훨씬 더 쉬워진다.

 

2. 점진적으로 개선하기

1. 코드가 나빠지고 있음을 느꼈을 때 기능을 추가하지 않고 개선을 시작한다.

2. 변경을 가한 후에도 시스템이 변경 전과 똑같이 돌아가야 한다. 테스트 코드가 없다면 작성하고, 코드를 수정하기 전 상태에서 모든 테스트가 통과해야 한다.

3. 책임에 따라 클래스를 나누고, 코드를 옮긴다. 테스트가 깨지지 않도록 확인하며 자잘한 변경을 조금씩 진행한다.

"프로그램을 망치는 가장 좋은 방법 중 하나는 개선이라는 이름 아래 구조를 크게 뒤집는 행위다"

 

3. IDE를 활용해 점진적으로 개선하기

Intellij 

mac 기준(Window는 command = Ctrl, option = Alt)

 

메서드 추출 기능 :                                     command + option + m

메서드 파라미터를 추가하거나 변경 기능 :  command + f6

메서드나 변수 이름 변경 :                          Shift + f6

변수 추출 기능 :                                        command + option + v

특정 값을 멤버 변수로 설정하는 기능 :       command + option + f

특정 값을 상수로 추출 기능 :                     command + option + c

 

하위 클래스의 메서드를 상위로 올리거나, 상위 클래스의 메서드를 하위로 내릴수 있는 기능 : 

해당 메서드에서 마우스 오른쪽 클릭 후 

 

 

728x90
반응형

'Book > Clean Code' 카테고리의 다른 글

[Clean Code] Chapter 13  (0) 2022.03.31
[Clean Code] Chapter 12  (0) 2022.03.28
[Clean Code] Chapter 11  (0) 2022.03.27
[Clean Code] Chapter 10  (0) 2022.03.26
[Clean Code] Chapter 09  (0) 2022.03.21
반응형

1. Edit Configurations 선택

  - 설정 위치 : 프로젝트 Run 버튼 왼쪽, 상단의 Run 카테고리 아래

 

 

2. Environment 아래에 VM option, Program arguments 설정 칸에 입력

  - ex) VM option : -Dspring.profiles.active=local (profile 로컬로 실행)

  - ex) Program arguments : arg1 arg2

 

728x90
반응형
반응형

1. Get from Version Control 선택

 

 

2. Version control Git 선택 후 URL 입력 후 Clone

 

 

* 매번 Intellij 실행 시 최근 프로젝트가 실행이 되어서 프로젝트를 선택할 수 있는 기본 화면이 안나온다면 아래와 같이 설정 변경

 

1. File > Settings ( 윈도우 기준 단축키 : Ctrl + Alt + s)

 

2. Reopen last project on startup 해제

 

728x90
반응형
반응형

Intellij에 Gradle 프로젝트를 Import 하였는데 아래와 같이 오류가 발생한다.

 

Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed

 

검색 결과 Intellij에서 자바 실행을 안되는 경우 나오는 오류 메시지로 확인이 되었다.

 

프로젝트 JDK, Gradle JDK 설정 확인 필요

 

- 프로젝트 JDK

Windows : File -> Project Structure (Ctrl + Alt + Shift + S)

Mac : File -> Project Structure

 

해당 프로젝트 JDK 버전과 일치한지 확인

 

- Gradle JDK

Windows : File -> Settings (Ctrl + Alt + S)

Mac : Intellij IDEA | Preferences

 

1. Build and run using, Run tests using -> Intellij IDEA로 변경

2. Gradle JVM 해당 프로젝트 JDK 버전과 일치한지 확인

728x90
반응형
반응형

 

intellij 상단에 File -> Open -> import할 프로젝트의 build.gradle 선택 후 Open as Project 선택

 

1. Open

 

 

 

2. build.gradle 선택

 

 

3. Open as Project 선택 끝!

 

728x90
반응형
반응형

Intellij 2020.3 버전에서 node.js 프로젝트 생성하는 방법

1. Node.js 다운로드 (https://nodejs.org/ko/download/)

2. Intellij > File > New > project > JavaScript > Express

 

 

3. Options > View Engine : EJS

 

 

4. 프로젝트 실행(port - 3000)

 

728x90
반응형

+ Recent posts