오늘은 멤버변수의 값을 조회하고 값을 할당하기 위한 Spring의 Getter, Setter에 대해 알아보도록 하자. 하지만 알아보기에 앞서 왜 Getter, Setter로 접근을 해야 하는지에 대해 알아야 한다.
📌자바의 접근 제어자
private : 같은 클래스 내에서만 접근
default : 같은 패키지 내에서만 접근
protected : 같은 패키지내 또는 자손 클래스일 경우 접근
public : 제한 없음
Java에서는 위의 4가지 방법으로 접근 제어자를 지정할 수 있다. 접근 제어자는 객체 지향 언어인 Java에서 데이터를 외부로부터 은닉하기 위해 사용한다. 따라서 클래스 내의 멤버 변수는 private으로 선언되고, 이러한 멤버변수에 접근하기 위해 Getter, Setter를 사용하여 각 변수를 조회하고 값을 할당한다.
📌Getter
- 멤버 변수의 값을 조회
- ex) getName()와 같이 get뒤에 멤버변수의 이름을 붙여서 사용
사실 이렇게만 들으면 이해하기 어렵다. 실제 멤버 변수를 만들고 조회해 보자.
📌Setter
- 멤버 변수의 값을 할당
- ex) setName()와 같이 set뒤에 멤버변수의 이름을 붙여서 사용
사실 이렇게만 들으면 이해하기 어렵다. 실제 멤버 변수를 만들고 조회해 보자.
📌멤버변수 선언(접근 제어자 : private)
Public class Person {
private String name;
private int age;
private String gender;
}
이와 같이 접근 제어자를 private으로 지정하면 클래스 외부에서 멤버변수에 접근할 수 없다. 따라서 아래 코드에선 Person 클래스의 멤버 변수의 접근이 불가하다.
Public class Test {
public Person getPerson() {
//멤버 변수의 접근 불가 -> 클래스 외부
Person person = new Person();
person.name;
person.age;
person.gender;
person.name = "moonstar";
person.age = 20
person.gender = "male";
return person;
}
}
이와 같이 클래스 내에 있는 멤버 변수에 대한 무분별한 접근을 막기 위해 접근 제어자를 private으로 지정을 한다. 하지만 접근이 필요한 경우에는 어떻게 해야 할까? 이러한 접근 방식의 일환으로 Getter와 Setter가 등장하였다.
📌Getter, Setter 선언
Public class Person {
private String name;
private int age;
private String gender;
public String getName() {
return this.name;
}
public String getAge() {
return this.age;
}
public String getGender() {
return this.gender;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setGender(String gender) {
this.gender = gender;
}
}
이처럼 멤버 변수의 클래스 내에 외부에서 접근이 가능한 public으로 Getter, Setter 메서드를 선언해 준다. 이제 선언을 완료하였으니 외부에서 접근해 보도록 하자.
📌Getter, Setter 접근
Public class Test {
public Person getPerson() {
//setter -> 값 할당
Person person = new Person();
person.setName("moonstar");
person.setAge(20);
person.setGender("male");
//getter -> 값 조회
String name = person.getName();
int age = person.getAge();
System.out.println(name);
System.out.println(age);
}
}
//moonstar
//20
'WEB > Spring' 카테고리의 다른 글
[MyBatis] 자주 실수하는 CDATA 사용법 자세히 알아보기 (6) | 2023.06.17 |
---|---|
[Java]stream 살펴보기_(1)등장 배경, 컬렉션과의 차이 (4) | 2023.05.21 |
[Spring]스프링 배치(Batch)란? (8) | 2023.02.20 |
[Spring]DI와 Autowired 확실히 알고 사용하기 (4) | 2023.01.31 |
[Spring]DTO와 VO의 모호한 사용, 확실하게 사용하기 (7) | 2023.01.30 |