순수한 공상과학연구소

전체 글 (227)

  1. 2021.08.06 [Java SpringBoot] @RequestParam과 @PathVariable?

    출처: https://2ham-s.tistory.com/290 @RequestParam과 @PathVariable? 컨트롤라에서 Requestparam으로 파라미터 값을 넘겨받을 때 아무 생각 없이 사용하곤 했는데, 이번 기회에 이 어노테이션에 대해 정리해 보고자 한다. 스프링에서는 컨트롤러로 사용할 클래스 상단 2ham-s.tistory.com 컨트롤라에서 Requestparam으로 파라미터 값을 넘겨받을 때 아무 생각 없이 사용하곤 했는데, 이번 기회에 이 어노테이션에 대해 정리해 보고자 한다. 스프링에서는 컨트롤러로 사용할 클래스 상단에 @Controller를 지정합니다. 주로 사용하는 형태의 파라메터를 전달하는 경우입니다. Case 1 ) http://xxx.x.x?index=1&page=2 Ca..

  2. 2021.08.06 [IntelliJ] IntelliJ에서 OpenJDK 11 설정하기

    출처: https://velog.io/@codemcd/Spring-boot%EC%97%90%EC%84%9C-OpenJDK-11-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0 IntelliJ에서 OpenJDK 11 설정하기 OpenJDK 11 설치 및 인텔리제이에서 정상적으로 사용하도록 설정 velog.io

  3. 2021.08.06 [IntelliJ] Intellij Git 쉽게 사용하기!!!

    출처: https://ddoriya.tistory.com/entry/Intellij-Git-%EC%82%AC%EC%9A%A9%EB%B2%95 Intellij Git 쉽게 사용하기!!! Intellij UI 간단히 살펴보기 프로젝트 목록 및 파일상태 확인 창 파란색 파일명 : 수정된 사항 있음 초록색 파일명 : 신규 추가 빨간색 파일명 : 신규 파일 추가 시 – unstage 상태 merge 등의 작업 후 ddoriya.tistory.com

  4. 2021.08.05 [Java SpringBoot] Bean과 의존성 주입(Dependency Injection)

    출처: https://ch4njun.tistory.com/219?category=853430 [Spring Boot] Bean과 의존성 주입(Dependency Injection) Bean에 대해서 설명하기에 앞서 Spring에서 등장하는 IoC 컨테이너에 대해서 이야기 해본다. IoC는 Inversion Of Control Container의 약자로 기존의 모든 제어를 클라이언트의 코드가 가지도록 구현하던 것 ch4njun.tistory.com

  5. 2021.08.05 [Java SpringBoot] SpringBoot H2 연결방법(H2 웹콘솔)

    출처: https://galid1.tistory.com/611 SpringBoot - SpringBoot H2 연결방법(H2 웹콘솔) 1. H2 DB란 SpringBoot에서 H2 DB를 사용하는 방법을 알아보도록 하겠습니다. 1. H2 DB란 역시 우선은, H2 DB가 무엇인지부터 간단히 알아보는게 좋을것 같습니다. H2 란? H2 DB는 JAVA기반의 RDBMS 입니다. 특징 galid1.tistory.com 출처: https://youngjinmo.github.io/2020/03/h2-database/ SpringBoot에서 H2 데이터베이스 사용하기 h2데이터 베이스란 컴퓨터에 내장된 램(RAM)메모리에 의존하는 데이터베이스 를 말한다. 램에 의존하기 때문에 테스트 또는 지금의 나처럼 실습을 위해..

  6. 2021.08.05 [Java] Interface와 Abstract class의 차이점 및 사용방법 이해하기

    출처: https://postitforhooney.tistory.com/entry/Java-Interface%EC%99%80-Abstract-class%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%99%80-%EA%B0%81%EA%B0%81%EC%9D%98-%ED%8A%B9%EC%A7%95-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0 [Java] Interface와 Abstract class의 차이점 및 사용방법 이해하기. # [Java] Interface와 Abstract class의 차이점 및 사용방법 이해하기. - 최근 수정일 : 2017.04.18 - IDE : Spring Tool Suite - OS : OSX Sierra (10.12.3) - Lang : JAV..

  7. 2021.08.05 [Java SpringBoot] Spring Boot DB 오류해결, DB 사용 안하고 싶을 때

    출처: https://hodolee246.tistory.com/9

  8. 2021.08.04 [Java] 오류: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 해결법 + -- warning-mode all 경고 없애기

    자바 빌드 오류 Message: * What went wrong: Gradle could not start your build. > Could not create service of type FileHasher using BuildSessionServices.createFileHasher(). > Cannot lock file hash cache (/home/ec2-user/app/step1/ToyStoryGit/.gradle/6.9/fileHashes) as it has already been locked by this process. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option ..

  9. 2021.08.04 [Linux] vi /vim 편집기 명령어 정리 (단축키 모음 / 목록)

    출처: https://iamfreeman.tistory.com/entry/vi-vim-%ED%8E%B8%EC%A7%91%EA%B8%B0-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-%EB%8B%A8%EC%B6%95%ED%82%A4-%EB%AA%A8%EC%9D%8C-%EB%AA%A9%EB%A1%9D vi /vim 편집기 명령어 정리 (단축키 모음 / 목록) vi /vim 편집기 명령어 정리 (단축키 모음 / 목록) 리눅스의 대표적인 에디터인 vi 편집기의 명령어들에 대해서 정리해보았습니다. vi 시작 명령어 명령어 설명 예제 vi {파일명} 파일열기, 작 iamfreeman.tistory.com

출처: https://2ham-s.tistory.com/290

 

@RequestParam과 @PathVariable?

컨트롤라에서 Requestparam으로 파라미터 값을 넘겨받을 때 아무 생각 없이 사용하곤 했는데, 이번 기회에 이 어노테이션에 대해 정리해 보고자 한다. 스프링에서는 컨트롤러로 사용할 클래스 상단

2ham-s.tistory.com

컨트롤라에서 Requestparam으로 파라미터 값을 넘겨받을 때 아무 생각 없이 사용하곤 했는데, 이번 기회에

이 어노테이션에 대해 정리해 보고자 한다.

 

스프링에서는 컨트롤러로 사용할 클래스 상단에 @Controller를 지정합니다.

 

주로 사용하는 형태의 파라메터를 전달하는 경우입니다.

Case 1 ) http://xxx.x.x?index=1&page=2

Case 2 ) http://xxxx.x.x/index/1

Case 1의 경우 파라미터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용합니다.

Case 2의 경우 Rest api에서 값을 호출할 때 주로 많이 사용합니다.

 

Spring에서는 이러한 전달인자를 처리하는데 두 가지 방법을 제공합니다.

Case 1의 경우 @Requestparam을 사용하는데 해당 어노테이션에 대하여 알아봅니다!

 

| @RequestParam이란? 

 

어노테이션의 괄호 안의 경우 전달인자 이름(실제 값을 표시)

 

1.단일 파라미터 변환

@GetMapping("getDriver")
public String viewName( @RequestParam("name") String name, @RequestParam("name2") String name2){

	//위처럼 하나 이상의 타입을 적용할 수 있습니다.
  	//스플잉에서 지원하는 변환기에서 지원되는 모든타입을 변환가능합니다.
	//RequesParam은 하나 이상 파라미터에서 사용 가능합니다.

}

 

ex)  /getDriver?name="name에 담긴 value"

위의 경우 url이 전달될 때 name 파라미터(name에 담긴 value)를 받아오게 됩니다.

즉, @RequestParam("실제 값") String 설정할 변수 이름

이런식으로 표현합니다.

 

이렇게 @RequestParam의 경우 url뒤에 붙는 파라미터의 값을 가져올 때 사용합니다.

 

| 주의  !!

 

만약 RequestParam에 key값이 존재하지 않을 경우

"BadRequest 로 4**" error가 발생합니다.

 

이를 방지하고자 default 값을 설정해줍니다.

바로 "DefaultValue"를 이용하여 기본 값을 설정해줍니다.

 " required=false " 속성을 꼭 명시해줘야 합니다. )

 

@GetMapping("getDriver")
public String viewName( @RequestParam("name",required=false,defaultValue="")
			String name, @RequestParam("name2",required="false,defaultValue="") String name2){

		//이런식으로 defaultValue를 지정하려면 required 속성을 명시해줘야 합니다.

}

required = false 속성을 명시함으로써 키값이 존재하지 않다고 해서 BadRequest가 발생하지 않게 됩니다.

그리고 존재하지 않다면 String 변수에 default로 "" 값이 들어가게 됩니다.

 

| 만약파라미터가 많아지게 되면 ?

 

파라미터가 많아지게 된다면 일일이 파라미터를 지정하는게 귀찮아 집니다.

이럴때는 Map으로 간단하게 받아올 수 있습니다.

 

여러개의 Parameter일 경우

@GetMapping("test")
public void testMethod(@RequestParam HashMap<String,String> paramMap){
	
    String data = paramMap.get("testParam");

}

위와 같이 Map을 통하여 파라미터를 컨트롤할 수 있습니다.

대규모의 파라미터를 받는데 map을 사용하면 편하지만 개발한 이외의 사람들이 유지보수 하기에는

어류운 점이 있습니다.

 

그래서 주로 " 커맨드 패턴 " 인 데이터 커맨드를 만들어서 사용합니다.

데이터 커맨드는 다음 글에 다루도록 하겠습니다.

 

| @PathVariable이란?

Type2의 URL을 처리할 때는 @PathVariable을 사용하게 됩니다.

 

@PostMapping("delete/{idx}")
@ResponseBody
public void testMethod(@PathVariable("idx") int id ){
	return testService.deleteId(id);
}

위의 예제처럼 PathVariable 의 경우 url에서 각 구분자에 들어오는 값을 처리해야 할 때 사용합니다.

 

너무나도 중요한 점 !!!


WAS같은 경우 URL에 특수문자나 구분기호 " , , ` , . " 등을 사용하면 인식을 못한다.

따라서 URL에 태우지 말고 JSON 형태로 HTTP BODY에 실어 보내야 한다 .!!

그러므로 여러개의 파라미터값을 삭제할 때 ex)1,2,3,4 이런식으로 url에 요청하면 안된다.

주의하자 !!!!

 

 

 

실제 사용은

2개다 복합적으로 사용합니다.

@GetMapping("test")
public List<Test> testMethod( @PathVariable("idx) int id, @RequestParam(value="date",required="false)
Date userDate) {



}

 

 

출처: https://galid1.tistory.com/611

 

SpringBoot - SpringBoot H2 연결방법(H2 웹콘솔)

1. H2 DB란 SpringBoot에서 H2 DB를 사용하는 방법을 알아보도록 하겠습니다. 1. H2 DB란 역시 우선은, H2 DB가 무엇인지부터 간단히 알아보는게 좋을것 같습니다. H2 란? H2 DB는 JAVA기반의 RDBMS 입니다. 특징

galid1.tistory.com

출처: https://youngjinmo.github.io/2020/03/h2-database/ 

 

SpringBoot에서 H2 데이터베이스 사용하기

h2데이터 베이스란 컴퓨터에 내장된 램(RAM)메모리에 의존하는 데이터베이스 를 말한다. 램에 의존하기 때문에 테스트 또는 지금의 나처럼 실습을 위해서는 간편하고 빠르기 때문에 좋은 옵션이

youngjinmo.github.io

User 폴더에 H2 DB저장 방법 

 

Server mode(TCP) 설명

출처: https://lob-dev.tistory.com/entry/H2%EC%9D%98-LocalIn-Memory-%EC%99%80-ServerTCP-%EB%AA%A8%EB%93%9C

 

H2의 Local(In-Memory) 와 Server(TCP) 모드

H2의 Local, Server 개념 Embedded 모드 H2 DB를 시스템의 메인 메모리에서 (JVM 위에서) 구동시키는 방식으로 application이 종료된다면 저장, 수정된 Data가 손실(휘발) 된다. 즉 기본적으로는 영속적이지 않

lob-dev.tistory.com

 

출처: https://hodolee246.tistory.com/9

 

Spring Boot DB 오류해결

0. Github https://github.com/hodolee246/on-my-own/tree/master/DBConfig 1. 개요 Spring Boot 프로젝트에서 오류 원인 및 해결방법 "Failed to configure a DataSource: 'url' attribute is not specified and..

hodolee246.tistory.com

 

내용: 

3.3 DataSourceAutoConfiguration 제외 (DB를 사용안한다는 의미)

springboot 생성 시 자동으로 생성되는 Application.class 입력

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class Sample01Application {

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

}

자바 빌드 오류 Message:

* What went wrong:
Gradle could not start your build.
> Could not create service of type FileHasher using BuildSessionServices.createFileHasher().
   > Cannot lock file hash cache (/home/ec2-user/app/step1/ToyStoryGit/.gradle/6.9/fileHashes) as it has already been locked by this process.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s

일때 

 

리눅스 또는 윈도우 터미널 

./gradlew --stop
./gradlew clean
./gradlew build

 

IntelliJ 에서 -- WARNING-MODE ALL 경고 메시지 없애는 방법

출처: https://aisi1004.tistory.com/842

 

빌드시 --warning-mode all 경고 없애기

빌드시 --warning-mode all  경고 없애기 Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. Use '--warning-mode all' to show the individual deprecation warn..

aisi1004.tistory.com

방법: 파일-setting - build, execution, deployment - compiler - java compiler - Additional command line parameters:

--warning-mode=all --stacktrace   <<-추가