전체 글에 해당하는 글 77

SpringBoot App에 외부 libs 추가

JAVA/Spring|2023. 11. 19. 22:57

SpringBoot는 기본적으로 jar내에 BOOT-INF에 classes, libs를 클래스패스로 물고 올라간다.

build.gradle혹은 pom.xml에 설정하여 빌드 타이밍에 같이 묶긴하면 BOOT-INF에 포함되어 사용하는데 문제 없지만

별도 jar로 제공 받아 활용을 해야한다면.

추가적으로 외부의 Libs를 ClassPath를 설정하기 위해서는 PropertiesLauncher 를 사용하고

-Dloader.path 를 설정하여 외부 jar도 활용 가능하다.

(특정 Bean을 external.jar로 만들어 추가한다거나..)

 

ex)

java -cp bootApp.jar -Dloader.path=external-plain.jar org.springframework.boot.loader.PropertiesLauncher

java -cp bootApp.jar -Dloader.path=plugins/ org.springframework.boot.loader.PropertiesLauncher

https://www.masterspringboot.com/configuration/web-server/how-to-use-an-external-jar-in-a-spring-boot-application/

'JAVA > Spring' 카테고리의 다른 글

[Spring] SessionStatus는 어떻게 동작할까?  (5) 2020.09.08
[JPA] LockType  (0) 2020.07.23
[Spring] LifeCycle, SmartLifeCycle  (0) 2020.06.23
[MSA] sidecar 패턴  (0) 2020.01.13
[SpringConfig] Properties 암호화  (0) 2019.12.24

댓글()

split과 동시에 assign

Kotlin|2021. 11. 29. 21:02

 

val text = "a,b"
val (one,two) = text.split(",")
/*
val one = text.split(",")[0]
val two = text.split(",")[1]
*/

 

코드 작성중 신기하고 편리해보이는 문법

까먹지 않기 위해 기록

 

text.split(",")의 size가 2보다 크더라도 [0], [1] 만 assign되지만

size가 2보다 작으면 IndexOutOfBoundsException 발생함

 

댓글()

NestJS Controller

NestJS|2021. 11. 17. 08:05

Spring과 거의 비슷

 

import { Controller, Get, Render, Param, Query } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }

  @Get("html")
  @Render('index')
  getHbs(){
    return { message: 'messageBinding' };
  }

  @Get(':id')
  findOne(@Param('id') id: string, @Query('getParam') getParam): string {
    
    console.log('getParam : ${getParam}')
    console.log("getParam : ${getParam}")
    console.log(`getParam : ${getParam}`)
    return `This action returns a #${id} cat`;
  }
}

 

Spring Next.js  
@{HttpMethod}Mapping @{HttpMethod}() @GetMapping -> @Get()
@PathVariable @Param()  
@RequestParam @Query()  
@RequestBody @Body() DTO로 바인딩도 가능
@ResponseEntity @Res() res 아래와 같은 방식으로 response 응답 정의 가능
res.status(HttpStatus.OK).json()

 

 

 

'NestJS' 카테고리의 다른 글

NestJS 시작  (0) 2021.10.21

댓글()

NestJS 시작

NestJS|2021. 10. 21. 22:18

지금까지 자바를 주로 사용해오고, 코틀린을 끄적 끄적 사용해왔지만

추후 Serveless에 활용되기에는 너무 먼것같고(Graalvm은 아직 멀고 멀어보인다..ㅠㅠ)

 

효율적인 Node.js 에 괜찮은 프레임워크가 나왔다길래 공부해보려고 합니다.

(추후 Serverless나 Toy 프로젝트에 조금씩 활용해볼수 있을듯..)

 

Nest CLI 설치

npm i -g @nestjs/cli

 

설치 후 'nest' 를 입력하면 command 들에 대해 설명이 잘 기술되어있습니다.

nest  
Usage: nest <command> [options]

Options:
  -v, --version                                   Output the current version.
  -h, --help                                      Output usage information.

Commands:
  new|n [options] [name]                          Generate Nest application.
  build [options] [app]                           Build Nest application.
  start [options] [app]                           Run Nest application.
  info|i                                          Display Nest project details.
  update|u [options]                              Update Nest dependencies.
  add [options] <library>                         Adds support for an external library to your project.
  generate|g [options] <schematic> [name] [path]  Generate a Nest element.
    Available schematics:
      ┌───────────────┬─────────────┬──────────────────────────────────────────────┐
      │ name          │ alias       │ description                                  │
      │ application   │ application │ Generate a new application workspace         │
      │ class         │ cl          │ Generate a new class                         │
      │ configuration │ config      │ Generate a CLI configuration file            │
      │ controller    │ co          │ Generate a controller declaration            │
      │ decorator     │ d           │ Generate a custom decorator                  │
      │ filter        │ f           │ Generate a filter declaration                │
      │ gateway       │ ga          │ Generate a gateway declaration               │
      │ guard         │ gu          │ Generate a guard declaration                 │
      │ interceptor   │ in          │ Generate an interceptor declaration          │
      │ interface     │ interface   │ Generate an interface                        │
      │ middleware    │ mi          │ Generate a middleware declaration            │
      │ module        │ mo          │ Generate a module declaration                │
      │ pipe          │ pi          │ Generate a pipe declaration                  │
      │ provider      │ pr          │ Generate a provider declaration              │
      │ resolver      │ r           │ Generate a GraphQL resolver declaration      │
      │ service       │ s           │ Generate a service declaration               │
      │ library       │ lib         │ Generate a new library within a monorepo     │
      │ sub-app       │ app         │ Generate a new application within a monorepo │
      │ resource      │ res         │ Generate a new CRUD resource                 │
      └───────────────┴─────────────┴──────────────────────────────────────────────┘

 

 

 

프로젝트 생성(proj_name에 생성하고싶은 이름 입력, 해당 이름으로 디렉토리 생성됨)

nest n proj_name

생성된 디렉토리를 진입하면 /src 디렉토리가 보이고

생성된 디렉토리에서 "nest start"를 입력하면 바로 서버가 기동된다.

(localhost:3000 호출시, 기본적으로 Hello World는 볼수 있도록 샘플 코드가 같이 생성된다)

/src 디렉토리를 확인하면 파일들이 5개 정도 존재하는데

 

app.controller.spec.ts : Test 코드
//
app.controller.ts : Controller 코드, Spring 처럼 어노테이션들을 볼 수 있다.
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}
//
app.module.ts : 모듈 선언(의존성 선언 같은), AppController는 AppService를 의존성을 가지고 있도록 생성됨
@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
//


app.service.ts : 서비스 코드(@Injectable은 없어도 Injection에는 문제는 없던데 추후에 학습해봐야겠다)
main.ts : SpringBootApplication 처럼, 메인이며, Nest를 실행하며, 포트에 대한 선언도 이 코드에 있다.

기본적으로 restController 처럼 값을 응답할텐데, View를 표현할 필요가 있다면 hbs 와 같은 모듈을 추가하여 동적 View도 제공 가능 합니다.

'NestJS' 카테고리의 다른 글

NestJS Controller  (0) 2021.11.17

댓글()