노력과 삽질 퇴적물
스프링부트: 기초 및 입문 (1) 본문
목차
|
|
필요한 파일 환경설정 라이브러리 연동 구동 및 배포 |
|
??? | |
기초 및 입문 (3)
|
??? |
0. 필요한 파일
파일명
|
예시경로 |
eclipse-jee-2022-09-R-win32-x86_64.zip | D:\dev_ide\eclipse_jee |
JDK | C:\Java\jdk_17.0.4.1 |
1. 환경설정
1) JDK
개발용 환경변수 설정(Path 설정) 참조.
JDK를 여러 버전으로 사용해야 할 경우, JAVA: 멀티 jdk 스위칭 참조.
2) 이클립스&Spring Tools 4
3) Spring Initializr
[#Spring Initializr](설정이 포함된 공유링크)에서 선택 가능한 Java버전은 19/17/11/8입니다. (2022년 10월 기준.)
다른 분들의 정리글을 참조하면,
Java 8: ~ 2030-12-??까지 지원 연장됨.
Java 11: ~ 2026-09-??까지 지원 연장됨.
Java 17: ~ 2029-09-??까지 지원 연장됨.
Java 19: ~ 2023-05-??까지 지원 예정. (LTS X.)
한글이 지원되는 JDK중 가장 최신버전이 15이나, JDK를 스위칭 가능하게 설정해뒀으니 17로 갑니다.
한글이 지원되는 JDK중 가장 최신버전이 15이나, JDK를 스위칭 가능하게 설정해뒀으니 17로 갑니다.
앞서 언급했듯, 초기 생성 설정은 공유한 링크에 포함되어 있습니다.
3) 추가설정, pom.xml
-> java 17
-> 인코딩
-> jar배포 지정
3) 추가설정, pom.xml
-> java 17
-> 인코딩
-> jar배포 지정
-> 추가 의존성
: jackson
: swagger
: com.auth0 (JWT)
2. 라이브러리 연동
* 주요 라이브러리에 대한 XxxxConfiguration.java라던가 전체적인 내부 배치는 아래와 같이 구성했습니다.
0) 롬북 이슈
-> lombok 1.18에 있는 이슈로 이전 버전 혹은 수정된 이후 버전이면 생략해도 될겁니다.
-> lombok 1.18에 있는 이슈로 이전 버전 혹은 수정된 이후 버전이면 생략해도 될겁니다.
-> XSlf4j를 사용해보려 했는데, 도무지 적용이 안 되서 @Slf4j로 사용.
1) redis
-> 로컬환경일 경우, NoSQL: 윈도우용 레디스 참조.
-> 로컬환경일 경우, NoSQL: 윈도우용 레디스 참조.
1
2
3
4
5
6
7
8
9
|
# IN application.properties
spring.cache.type=redis
spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379
spring.data.redis.password=this_is_password
custom.redis.default.ttl.sec=600
custom.redis.ping.key=ping
custom.redis.ping.ttl.sec=60
|
cs |
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
//com.analoggreen.interlocking.config.RedisConfiguration.java
... ... ...
@Slf4j
@EnableCaching
@Configuration
public class RedisConfiguration
{
@Value("${spring.data.redis.host}")
private String REDIS_HOST;
@Value("${spring.data.redis.port}")
private int REDIS_PORT;
@Value("${spring.data.redis.password}")
private String REDIS_PASSWORD;
@Value("${custom.redis.ping.key}")
private String REDIS_PING;
@Value("${custom.redis.ping.ttl.sec}")
private long REDIS_PING_TTL;
@Value("${custom.redis.default.ttl.sec}")
private long DEFAULT_TTL;
@Bean
public RedisConnectionFactory redisCacheConnectionFactory()
{
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
config.setHostName(REDIS_HOST);
config.setPort(REDIS_PORT);
config.setPassword(REDIS_PASSWORD);
return new LettuceConnectionFactory(config);
}
@Bean
public RedisCacheConfiguration cacheConfiguration()
{
return RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(DEFAULT_TTL))
.disableCachingNullValues()
.serializeValuesWith(SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
}
@Bean
public RedisCacheManagerBuilderCustomizer redisCacheManagerBuilderCustomizer()
{
return (builder) -> builder.withCacheConfiguration(REDIS_PING, cacheConfiguration().entryTtl(Duration.ofSeconds(REDIS_PING_TTL)));
}
}
|
cs |
2) mariaDB
-> 로컬환경일 경우, SQL: 마리아 디비(mariaDB) zip버전 윈도우 로컬서버 참조.
-> 로컬환경일 경우, SQL: 마리아 디비(mariaDB) zip버전 윈도우 로컬서버 참조.
1
2
3
4
5
|
# IN application.properties
spring.datasource.url=jdbc:mariadb://localhost:3306/springboot_interlocking
spring.datasource.username=root
spring.datasource.password=this_is_password
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
|
cs |
3) mongoDB
-> 로컬환경일 경우, NoSQL: 몽고 디비(mongoDB) zip버전 윈도우 로컬서버 참조.
1
2
3
4
5
|
# IN application.properties
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.username=springbootSystem
spring.data.mongodb.password=this_is_password
|
cs |
4) 로그파일 처리
스프링부트에서는 logback-spring.xml을 통해 설정을 하면 application.properties에서 설정한 값을 스프링의 환경변수를 시스템 환경변수로서 사용할 수 있고, 프로필에 따라 로그 설정할 수 있습니다.이를 "Spring Boot Logback Extension"라고 합니다. - (shawnhansh, 2022/06/03)
-> 서버 구동시 명령어에 넣은 옵션으로 빌드된 jar에 포함된 application.properties이 아닌 별도의 application.properties로 구동이 가능하다보니, 프로퍼티 파일로 제어가 안 되는 일부 설정만 logback-spring.xml에 입력했습니다. 제가 알기로는 설정파일 읽는 순서도 xml보다 application.properties를 먼저 읽더군요.
* DB와 스프링부트를 로컬 구동시킨채로 DB쪽을 정지시키면, 콘솔 로그상 redis/mariaDB/mongoDB중 접속불가 메시지가 곧장 나온건 mongoDB이더군요. 지금은 이정도 연결까지 해놓고 jar배포로 넘어가겠습니다.
3. 구동 및 배포
1) 로컬 구동
-> 프로젝트 우클릭/Debug As/Spring Boot App으로 구동시킵니다.
-> mac환경에서는 어노테이션인 @SpringBootApplication이 붙은 클래스 파일에서 자바 어플리케이션 실행으로 로컬 구동이 되지만, 윈도우에서는 조금 다릅니다.
2) jar배포
* 빌드시 나오는 메뉴명이랑 로그로는 maven 빌드가 정식 명칭인거 같은데, 따로 명령어를 치는거 아닙니다.
* jar로 배포하려는 이유는 톰캣이 내장된 배포형식이여서입니다. 톰캣을 따로 쓰신다면, war로 배포.
Goals에 [package] 입력.
확장자가 jar.original인쪽이 아닙니다.
기타. 참조자료
1) 스프링부트
[구멍가게 코딩단] 코드로 배우는 스프링 웹 프로젝트 (개정판) 강의
갓대희의 작은공간 :: [스프링부트 (1)] 스프링부트 시작하기 (SpringBoot 프로젝트 설정 방법)
[Spring]Eclipse로 Spring Boot 시작하기
2) SQL - mariaDB
갓대희의 작은공간 :: [스프링부트 (1)] 스프링부트 시작하기 (SpringBoot 프로젝트 설정 방법)
[Spring]Eclipse로 Spring Boot 시작하기
2) SQL - mariaDB
3) NoSQL - mongoDB
4) 레디스
[Redis Client] Jedis vs Lettuce (Lettuce를 쓰자)
[SpringBoot2] Lettuce Java Redis Client와 RedisCommands method설명
[SpringBoot2] Lettuce Java Redis Client와 RedisCommands method설명
Jedis 보다는 Lettuce를 쓰자
Redis 로 캐싱하기
Spring Boot Redis 두 가지 사용 방법 RedisTemplate, RedisRepository
(영문) Spring Boot Cache with Redis
5) Jackson
Jackson 라이브러리 기본기능 정리 - json 직렬화와 역직렬화
(영문) Jackson ObjectMapper
(영문) JacksonPolymorphicDeserialization · FasterXML/jackson-docs Wiki · GitHub
Redis 로 캐싱하기
Spring Boot Redis 두 가지 사용 방법 RedisTemplate, RedisRepository
(영문) Spring Boot Cache with Redis
5) Jackson
Jackson 라이브러리 기본기능 정리 - json 직렬화와 역직렬화
(영문) Jackson ObjectMapper
(영문) JacksonPolymorphicDeserialization · FasterXML/jackson-docs Wiki · GitHub
6) HTTP Client-Side
7) 로깅
8) 미분류 및 기타
[Spring-Boot] Lombok "log" cannot be resolved 해결
(영문) Core Features
(영문) Core Features
기타. 변경이력
일자
|
변경이력 |
2020-08-25 | 초안 작성. [#blogger][#티스토리] |
2023-03-16 | 1) jdk 변경 jdk1.8.0_202 -> jdk_17.0.4.1 2) 기본 세팅 및 빌드 발행까지로 재정비. |
'📂게임개발 note > 클라우드 & 서버' 카테고리의 다른 글
스프링부트: 기초 및 입문 (2) (0) | 2023.04.09 |
---|---|
우분투: 레드마인 설치 (0) | 2019.06.30 |
AWS: 원격 캐싱서버, Redis&memcached (0) | 2019.06.06 |
AWS: 우분투 SVN서버 (0) | 2018.04.10 |
AWS: APM tar버전 설치(컴파일 설치) (0) | 2015.02.12 |