인텔리제이 사용해보기 - 1

공부는 혼자하는 거·2021년 4월 17일
0

그동안 이클립스만 써보다가 처음으로 인텔리제이 유료버전을 사용해보는 체험이다. 아쉬운 점이라면 내가 대학생일 때, 무료 라이센스를 신청했는데, 그게 벌써 2020년 11월 대라는 거, 유효기간이 1년인 걸 감안하면, 무료로 사용할 기간이 별로 많이 남아있지 않다.

요런 차이가 있다고 한다. 한 가지 다른 점은 이클립스의 워크스페이스 같은 경우 하나의 디렉토리라고 생각할 수 있지만 인텔리제이의 프로젝트는 하나의 프로젝트 개념으로 생각해야한단다. 이클립스의 워크스페이스에서는 서로 관련이 없는 프로젝트를 구성하여 사용하는 경우가 있지만, 인텔리제이의 경우 프로젝트 안에 작은 프로젝트(모듈)를 구성하는 것이기 때문에 서로 연관이 있는 프로젝트를 구성해서 사용하는 것이 바람직한단다.

공통 프로젝트와 여러 개의 프로젝트가 멀티로 구성되어 서로 상호작용하는 방식으로 구성된다면, 루트 프로젝트를 생성하고 여러 개의 프로젝트를 루트 프로젝트의 멀티 모듈로 구성해야 한다고 한다. 일단 진행하자.

https://jojoldu.tistory.com/334

빈 폴더를 만들고 그 프로젝트를 empty project로 만들자.

그런 다음 프로젝트 안에 새로운 모듈을 하나 만들어준다.

폴더를 하나 만들고 거기에 경로지정해준 다음 springboot 프로젝트를 하나 만들어준다. 의존성은 잘 모르겠지만, STS 툴이랑 별로 다르지 않겠지..템플릿 엔진은 mustache로 해줬다. 잘 모르지만 JSP 랑 크게 다르지 않을 거라 예상하고 써보기로 했다. 스프링부트가 지원해주는 서버사이드 템플릿 엔진을 한번쯤은 써봐야 되지 않겠나 ㅎㅎ

처음으로 gradle 버전으로 해줬다. gradle은 처음이지만, maven 방식이랑 크게 차이 안 나겠지.

인텔리제이는 git ignore 설정이 자동으로 되어있지 않다더라. ctrl+shift+a 로 plugins 검색해서 igonore 파일 생성해줬다.

자동으로 gitignore 파일이 생성되나보다..

전체적으로 툴이 생긴 게 안드로이드 스튜디오와 똑 닮았네. 같은 제조사인가? 단축키도 안드로이드 스튜디오와 비슷한 거 같다. 암튼 잘 작동하는지 간단하게 RestController로 테스트를 해보겠다.

이번 체험은 상당부분 '스프링부트와 AWS로 혼자 구현하는 웹 서비스' 책을 참고하여 진행해볼 참이다. 다른 점이라면 난 Junit5로 테스트해보겠다는 점?

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void hello_test() throws Exception{
        String hello = "hello";

        mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
    }

}

당황했던 점이 intellij는 sts 툴과 다르게 static method ctrl+space로 자동완성이 안 되더라. 되는 라이브러리도 있고, 안 되는 라이브러리는 함수를 적고 alter+Enter로 직접 라이브러리를 추가해야한다. 처음부터 상당히 불편한 느낌이 오는데, 이것도 설정에서 변경할 수 있는 방법이 있겠지.. 일단 고대로 진행해본다.

https://ratseno.tistory.com/76 찾아보니 이런 방법이 있더라.

테스트 해보니 당연 fail이 뜬다. 당근 포트도 설정안해줬고, DB관련 설정도 안 해줬기 때문인디. 책에서는 어떻게 바로 8080 포트로 띄워지지?
(테스해보니 디폴트로 8080으로 잡히네) 암튼 잘 모르겠고, 하던대로 application.yml 로 바꾸고 설정들을 추가시켜줬다. 일단 mysql DB부터 만들고,

create user 'intell'@'%' identified by 'intell1234';
GRANT ALL PRIVILEGES ON *.* TO 'intell'@'%';
create database intell;
server:
  port: 8080
  servlet:
    context-path: /
    encoding:
      charset: utf-8
      enabled: true
    session:
      timeout: 60m

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/intell?serverTimezone=Asia/Seoul
    username: intell
    password: intell1234

  jpa:
    open-in-view: true
    hibernate:
      ddl-auto: update
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
  #    show-sql: true
  #    properties:
  #      hibernate.format_sql: true

  jackson:
    serialization:
      fail-on-empty-beans: false

그리고 시큐리티 관련 의존성도 다 주석처리했다. 지금 당장은 책의 내용을 따라가야되기 때문에.

//    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
//    implementation 'org.springframework.boot:spring-boot-starter-security'
//    testImplementation 'org.springframework.security:spring-security-test'

이제 다시 테스트 코드를 실행하면 통과되고 실제 localhost 환경에서 서버 테스트해도 잘 작동될 것이다.

일단 이번 장은 여기서 끝마치도록 하겠다.

profile
시간대비효율

0개의 댓글