본문 바로가기
Spring

2022-09-22 스프링

by allwing12 2022. 9. 22.
    @GetMapping("/addPerson")
    @ResponseBody
    public Person addPerson(int id, int age, String name) {
        Person p = new Person(id,age,name);
        return p;
    }
}

@Getter
class Person {
    private int id;
    private int age;
    private String name;
    
  //  public int getId () {
  //  	return id;
  //  }
	
  //  public int getAge () {
  // 	return age;
  //  }
    
  //  public String getName () {
  //  	return name;
  //  }
  
  // 위에서 주석처리를 한 것이 lombok 라이브러리가 없었을 때 Get을 직접 해줘야하는 코드이다.
  // lombok 라이브러리는 위의 get 코드를 전부 직접 해주는 역할을 한다고 보면 된다.
  

    public Person(int id, int age, String name) {
        this.id = id;
        this.age = age;
        this.name = name;
    }
}

 

위의 코드는 사람이라는 클래스를 통해서 사람을 하나 만든 모습이다.

저기에서 Getter의 역할은 코드를 줄여주는 역할인데 스프링의 lombok이라는게 저 Getter를 하기 위해

필요한 코드를 줄여줘서 Getter 하나만 쓰면 사용이 가능하다.

위의 코드에 get 코드를 직접 만들어줘야하는 수고를 lombok 라이브러리가 알아서 해주는 고마운 친구이다.

 

 

@Getter
@AllArgsConstructor
class Person {
    private int id;
    private int age;
    private String name;
    
}

 

여기에선 AllArgsConstructor 라는 코드 하나로 public Person에 들어가는 모든 코드를 없앴다.

이런식으로 해서 라이브러리를 활용하면 코드의 길이를 확실하게 줄일 수 있다.

 

위와 같이 코드를 짠 후 주소창에 id와 age, name 을 입력해주면 된다 그러면 정상적으로

실행이 되는 모습을 볼 수 있다.

 

 

@GetMapping("/addPerson")
    @ResponseBody
    public Person addPerson(Person person) {
        return person;
    }
}

@Getter
@AllArgsConstructor
class Person {
    private int id;
    private int age;
    private String name;
}

 

그리고 위의 코드에서 똑같이 id,age,name 을 불러오는 다른 방법 중 하나인데

꼭 addPerson(int id, int age, String name) 을 하지 않고 addPerson(Person person) 만으로도

그리고 return person; 만 하는 것으로도 id,age,name 을 불러올 수 있다.

이건 스프링부트가 사용자 편의를 위해 만들어놓은 기능이다.

 

 

 

@GetMapping("/addPerson/{id}")
    @ResponseBody
    public Person addPerson(Person person, @PathVariable("id") int id) {
        return person;
    }
}

 

위의 코드는 보통 id와 age,name 의 값을 주소창에 직접 입력한다, 예를 들어서

localhost:포트번호/addPerson?id=1&age=20&name=tom 이런식으로 주소창에 입력해서 들어가야

id에는 1의 값이 age에는 20의 값이 name 에는 "tom" 이라는 값이 들어가는데

이거를 localhost:포트번호/addPerson/1?age=20&name=tom 으로 해서 들어갈 수 있게 해준다

즉, id 값을 주소창에 id 라고 입력을 하지 않아도 GetMapping 때 addPerson/{id} 가 있기 때문에

id 의 값을 입력 받을 수 있으며 PathVariable 이라는 것을 통해서 받을 수 있다.

근데 사실 여기에서 PathVariable 이라는 것을 안써도 addPerson/{id} 만 해줘도 스프링부트가 편의성을 위해서

만들어놓은 시스템으로 인해 id 값을 받을 수 있게 해준다.

 

댓글