스프링부트 - Runners

Spring Boot/개발환경|2019. 4. 11. 01:25

스프링 부트가 구동되는 시점에 특정 코드를 실행 시키기 위해서는
Command Line Runner와 Application Runner를 이용할 수 있습니다.
두 Runner는 스프링 부트에서 제공되는 인터페이스입니다.

Maven 의존성 라이브러리

pom.xml
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

1. CommandLineRunner

1-1. CommandLineRunner 예제

DemoApplication.java
package com.developer.hive.demo;

import java.util.Arrays;
import java.util.stream.Collectors;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        // TODO Auto-generated method stub
        String argsArray = Arrays.stream(args).collect(Collectors.joining(","));
        System.out.println("CommandLineRunner 시작 : args = " + argsArray);
    }
}

1-2. STS Run Configurations...

실행환경을 설정하기위 Run > Run Configurations... 메뉴를 클릭하여 줍니다.

1-3. STS Run Configurations > Arguments

Arguments 탭에서 a b c 값을 넣어주고 Run 버튼을 클릭

1-4. 결과

자세히 보시면 Arguments 탭에서 입력한 값 앞쪽에 입력하지 않은 --spring.output.ansi.enabled=always 값이 보입니다.

STS Run Configurations...

ANSI console output 버튼을 클릭 해제해 줍시다.

결과

이제서야 Arguments에 입력한 a b c 값만 출력이 되었습니다.
ANSI 콘솔이 해제되어 컬러가 없지만 --spring.output.ansi.enabled=always 문자열 값이 들어가지 않습니다.


2. ApplicationRunner

2-1. ApplicationRunner 예제

package com.developer.hive.demo;

import java.util.List;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements ApplicationRunner {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // TODO Auto-generated method stub
        List<String> argsList = args.getNonOptionArgs();
        System.out.println("ApplicationRunner 시작 : args = " + argsList.toString());
    }
}

2-2. STS Run Configurations > Arguments

Arguments 탭에서 x y z 값을 넣어주고 Run 버튼을 클릭

2-3. 결과

Arguments x y z 값이 출력되었습니다.


3 @Order 어노테이션

3-1. @Order 어노테이션 예제

package com.developer.hive.demo;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;

@SpringBootApplication
public class DemoApplication {

    @Order(1)
    @Configuration
    public class TestCommandLineRunner implements CommandLineRunner {

        @Override
        public void run(String... args) throws Exception {
            // TODO Auto-generated method stub
            String argsArray = Arrays.stream(args).collect(Collectors.joining(","));
            System.out.println("CommandLineRunner 시작 : args = " + argsArray);

        }
    }

    @Order(3)
    @Configuration
    public class TestCommandLineRunner1 implements CommandLineRunner {

        @Override
        public void run(String... args) throws Exception {
            // TODO Auto-generated method stub
            String argsArray = Arrays.stream(args).collect(Collectors.joining(","));
            System.out.println("CommandLineRunner1 시작 : args = " + argsArray);

        }
    }

    @Order(2)
    @Configuration
    public class TestApplicationRunner implements ApplicationRunner {

        @Override
        public void run(ApplicationArguments args) throws Exception {
            // TODO Auto-generated method stub
            List<String> argsList = args.getNonOptionArgs();
            System.out.println("ApplicationRunner 시작 : args = " + argsList.toString());

        }
    }

    @Order(4)
    @Configuration
    public class TestApplicationRunner1 implements ApplicationRunner {

        @Override
        public void run(ApplicationArguments args) throws Exception {
            // TODO Auto-generated method stub
            String[] argsList = args.getSourceArgs();
            System.out.println("ApplicationRunner1 시작 : args = [" +  Arrays.stream(argsList).collect(Collectors.joining(", "))+"]");
        }
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

3-2. 결과

@Order 어노테이션 예제 순서대로 실행된것을 확인할 수 있습니다.

댓글()

스프링부트 H2 데이터베이스

Spring Boot/개발환경|2019. 4. 8. 23:36

H2는 RDBMS(관계형데이터베이스)입니다.
매우 빠르고작은 크기의 데이터베이스라고 보시면 됩니다.
주로 메모리에 데이터를 저장하는 용도로 쓰이며, 디스크에 데이터를 저장할수도 있습니다.

  • 매우 빠른 오픈 소스, JDBC API
  • 임베디드 및 서버모드(영구 데이터베이스), 메모리 내 데이터베이스
  • 브라우저 기반 콘솔 응용 프로그램 지원
  • 작은 설치 공간 : 약 2MB jar 파일 크기

영구 데이터베이스와 인 메모리 데이터베이스의 차이점

영구 데이터베이스는 실제 메모리에 데이터를 유지하므로 데이터베이스 서버가 반송 되더라도 다시 사용이 가능합니다.
인 메모리 데이터베이스의 경우 데이터는 시스템 메모리에 저장되며 프로그램을 닫으면 데이터가 손실됩니다.

인 메모리 데이터베이스는 POC(Proof Of Concept)에 사용되며 프로덕션 응용 프로그램에서는 권장하지 않습니다.

영구 데이터베이스는 Oracle, Mysql, Postgres 등을 사용하며, H2는 일반적으로 메모리 데이터베이스로 사용합니다.

인메모리DB

  • 컴퓨터가 꺼지면 모든 내용이 날라감
  • 연속성이 없음
  • 연속성을 주는 방법이 있지만, 그 방법을 쓰려면 그냥 일반 DB모드로 쓰면 된다.

Maven 의존성 라이브러리

pom.xml
<dependencies>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

1. H2 데이터베이스 설정

1-1. 기본설정

spring.datasource.url=jdbc:h2:mem:testdb  
spring.datasource.driverClassName=org.h2.Driver  
spring.datasource.username=sa  
spring.datasource.password=  
spring.h2.console.enabled=false  

H2데이터베이스는 따로 설정하지 않으면 위와 같은 값으로 기본 설정을 합니다.
datasource.url의 jdbc:h2:mem:testdb는 testdb 스키마에 mem 인 메모리 데이터베이스로 동작하라는 설정입니다.

1-2. 기본설정 무시

src/main/resources/application.properties
spring.h2.console.enabled=true

application.properties에 추가하여 H2 콘솔을 사용하게 합니다.
물론 나머지 설정들은 기본값으로 들어갑니다.


2. H2 콘솔 접속

2-1. 스프링 실행 후 로그인 창 접속

http://localhost:8080/h2-console

기본 설정으로 스프링을 실행했다면 따로 건들건 없으며 Connect 버튼을 클릭하여 접속합니다.

2-2. H2 로그인 접속

이 창에선 직접 테이블을 만들거나 지우거나 CRUD가 가능합니다.
단, 스프링부트를 종료하게 된다면 작업했던 내역들은 전부 사라집니다.


3. 스프링부트가 실행될때 SQL문을 실행시키기

3-1. sql파일생성

src/main/resources/data.sql
CREATE TABLE Employee
(
    id integer NOT NULL,
    firstName varchar(255) not null,
    lastName varchar(255) not null,
    email varchar(255),
    phoneNumber varchar(255),
    hireDate timestamp,
    salary integer,
    commissionPct integer,
    primary key(id)
);

3-2. 스프링 재 실행 후 접속

EMPLOYEE 테이블이 생성되면서 실행된것을 볼 수 있습니다.
CREATE문이나 INSERT문 등 테스트환경에 필요한 데이터베이스의 값들을 미리 설정하여 좀더 쉽게 개발이 가능합니다.

댓글()

스프링부트 Maven 프로젝트 Import 하기

Spring Boot/개발환경|2019. 4. 8. 00:03

스프링부트 프로젝트에선 대표적으로 두가지의 유형의 프로젝트가 있습니다.

  • Maven Project
  • Gradle Project

STS에서 Maven 프로젝트를 Import하는 방법을 소개하려 합니다.
start.spring.io를 이용한 스프링 부트 프로젝트 생성 에서 받은 프로젝트를 불러오도록 하겠습니다.


1. STS에서 import

1-1. File > Import...

1-2. Maven > Existing Maven Projects

Next 버튼을 클릭

Browse... 버튼을 클릭하여 Maven 프로젝트의 폴더를 선택하여 줍니다.
Finish 버튼을 눌러 줍니다.


2. 자동으로 Maven Importing

2-1. pom.xml의 디펜던시 설치

아래 화살표를 보시면 Importing Maven projects가 100%가 되면 pom.xml에 있는 디펜던시를 전부 다운로드하게 됩니다.
따로 설정하시지 않았다면 C:\Users\사용자명.m2에 다운로드 받습니다.

2-2. Package Explorer

메이븐 형태의 구조로 적용되어 있습니다. 그리고 프로젝트명 옆에 [boot]라는 표시가 보입니다.

2-3. Boot Dashboard

위에 뜬 DemoJpa

DemoJpaApplication.java
package com.developer.hive.DemoJpa;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoJpaApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoJpaApplication.class, args);
    }

}

@SpringBootApplication을 인식하여 뜬것입니다.
따로 Run Configurations에서 설정도 가능합니다.


3. 실행

3-1. Boot Dashboard에서 (Re)start

[Before]

[After]

3-2. 브라우저에서 localhost:8080 접속

pom.xml 디펜던시에 spring-data-rest-hal-browser를 설정하여 위와 같은 화면이 뜬것입니다.

댓글()

STS 다운로드 및 설치

Spring Boot/개발환경|2019. 4. 5. 00:56

스프링 프레임워크를 쉽게 이용하기 위한 개발 툴인 STS(SpringToolSuite)
이미 개발 툴들이 많지만, 가장 점유율이 많은 개발 툴로 알려진(?) STS를 이용해 보겠습니다.

0. 이전에 해야하는 작업은?


1. 다운로드

https://spring.io/tools 접속

자신의 PC사양에 맞는 Spring Tools 4 for Eclipse(STS)를 다운로드 받는다.


2. 설치

설치라고 하였지만 STS는 다운로드한 zip파일을 자신이 원하는 폴더에 압축을 풀어 주시면 됩니다.

압축을 풀면 sts-4.2.0.RELEASE 폴더에 SpringToolSuite4.exe 실행 파일이 보일 것입니다.


3. 실행

SpringToolSuite4.exe 실행하면 멋있는 로고가 출력되고

위와 같이 나타날 것입니다. Browse... 버튼 을 눌러서 Workspace 폴더를 설정하시면 됩니다.
Launch 버튼 을 눌러서 실행

드디어 STS를 설치(Workspace설정)하고 실행하였습니다.


4. STS 환경설정

보통 개발을 할때는 UTF-8 유니코드를 이용하여 만들어 줍니다.
STS의 Workspace 폴더를 새로 설정하면 Windows 환경에서는 UTF-8로 잡혀있지 않아서
새로운 Workspace 폴더를 잡을 때마다 설정을 해주셔야 합니다.

상단에 [Window] - [Preferences]를 들어가면 설정이 가능합니다.

4-1.General > Content Types > Text

4-2. General > Workspace

댓글()

start.spring.io를 이용한 스프링 부트 프로젝트 생성

Spring Boot/개발환경|2019. 3. 27. 22:12

1. start.spring.io 접속

https://start.spring.io 사이트에서는 스프링 부트 프로젝트를 자동으로 만들어주는 서비스를 제공합니다.
스프링부트 프로젝트를 직접 다운로드하여 이용하려면 사이트에 접속하여 적절한 옵션을 선택하여 이용하여 줍시다.

  • Project
  • Language
  • Spring Boot
  • Project Metadata
  • Dependencies

2. 사용 방법은?

프로젝트의 언어와 스프링 부트의 버전, 프로젝트의 Group/Artifact 그리고 Dependencies의 사용할 Dependency를 넣어주시면 됩니다.

  • Project
    • Maven Project
  • Language
    • Java
  • Spring Boot
    • 2.13
  • Project Metadata
    • Group
      • com.developer.hive
    • Artifact
      • DemoJpa
  • Dependencies
    • JPA
    • JDBC
    • Web
    • H2
    • Rest Repositories HAL Browser

2-1 모든 Dependencies를 보려면?

Dependencies 밑에 See all을 클릭하시면 됩니다.

2-2 다운로드

아래에 있는 Generate Project - alt + ⏎ 버튼을 클릭하시면 Artifact명으로 된 zip파일을 다운로드하게 됩니다.

3. 다운받은 프로젝트 파일 구조

Artifact명으로 된 zip파일을 압축을 해제하면 다음과 같은 폴더와 파일들이 보입니다.

3-1 cmd창에서 한눈에 보려면?

해당 디렉토리에서 명령어 입력

> tree /f

'Spring Boot > 개발환경' 카테고리의 다른 글

스프링부트 - Runners  (0) 2019.04.11
스프링부트 H2 데이터베이스  (0) 2019.04.08
스프링부트 Maven 프로젝트 Import 하기  (0) 2019.04.08
STS 다운로드 및 설치  (1) 2019.04.05

댓글()

티스토리 toc 플러그인 적용하기

카테고리 없음|2019. 3. 25. 07:38

테이블 오브 컨텐츠 플러그인 설치하기

'Table of Contents jQuery Plugin'은 블로그 포스팅 후 자동으로 편하게 TOC로 변환해 주는 jQuery Plugin이다.

1. 다운로드 방법은?

1.1 사이트 접속

https://ndabas.github.io/toc/

1.2 파일확인

2. 티스토리 스킨 편집

2.1 관리페이지 접속 후 스킨 편집

2.2 html편집

2.3 파일업로드

다운로드 받은 jquery.toc 파일을 업로드

2.4 html 이력

위와 같이 적당한 위치에 아래 코드를 넣어준다.

<script>
    $("#toc").toc({content: "div.container", headings: "h2,h3,h4"});
</script>

3. 글쓰기에 적용은?

3.1 글쓰기에디터 html 모드

html 체크박스를 체크해준다.

3.2 toc 태그 삽입

<ul id="toc" class="toc"></ul>

최상단에 태그 삽입 후 포스팅을 하시면 됩니다.
h1태그부터~h6태그까지 적용이 됩니다.
아래는 이 페이지의 h태그를 적용한 예입니다.

댓글()

rufus를 이용한 linux usb 만들기

Linux|2018. 11. 15. 19:57

rufus를 이용한 linux usb 만들기



다운로드 사이트

https://rufus.ie/ko_KR.html


다운로드


1. 다운로드 영역에서 Rufus 3.3을 받습니다.


2. 완료된 후 해당 파일


usb 설치 디스크 만들기


- 우분투 18.04를 설치해 보겠습니다.

- 우분투 다운로드 받는 방법(링크)


1. 실행화면 (현재 USB가 잡혀있음)


2. ISO 이미지를 선택해줍니다.


3. 시작 버튼을 클릭


4. 예(Y) 버튼 클릭


5. ISO 이미지 모드로 쓰기 (권장) OK


6. 포맷 진행


7. 완료








'Linux' 카테고리의 다른 글

Ubuntu 18.04 Desktop 다운로드  (0) 2018.10.22

댓글()

Windows10에 Java8 설치

Java/개발환경|2018. 10. 30. 12:28

Windows10에 Java8 설치

2018년 10월 현재 오라클사이트에 자바 다운로드 페이지에 가보면 자바 11버전8버전이 보인다.

8버전같은경우 2019년까지 장기지원이 끊기는 분위기이다.

자바 11 이상부터 오라클 JDK는 유료로만 공개되지만 오픈 JDK 바이너리는 여전히 무료다.

한마디로 계속 무료다!

리눅스로 따지면 레드햇과 CentOS 관계?

자바 9,10버전은 장기지원을 안하는 버전이므로 쓰지 않는게 좋다.

아래에 사진을 보면 Java SE 11.0.1(LTS)라고 보인다.

LTS(Long Term Support) 장기 지원 버전이다.


사이트 링크

https://www.oracle.com/technetwork/java/javase/downloads/index.html


윈도우 버전이 32비트인지 64비트인지 자신의 버전에 맞춰서 다운로드 받습니다.


다운로드된 파일


설치하기

다운로드된 파일을 실행하고 아래와 같이 순서대로 진행을 합니다.




라이센스 변경사항이 나오는데, 해당 버전(자바8)은 영향을 받지 않는다고 합니다.





환경변수 설정


1. 내 PC에 속성 창을 열어줍니다.



2. 환경변수 창 열기


3. JAVA_HOME 만들기


변수 이름 : JAVA_HOME

변수 값 : C:\Program Files\Java\jdk1.8.0_192


4. Path 편집


변수 값 : %JAVA_HOME%\bin


현재 까지 진행 하셨다면 열려진  전부 확인을 클릭하여 줍니다.


JAVA 확인


1. cmd.exe (명령 프롬프트)연다.



2. java 입력


3. javac 입력

'Java > 개발환경' 카테고리의 다른 글

우분투 18.04 자바 8 설치하기  (2) 2018.10.25

댓글()