-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
타임 리프 객체 접근
24.04.23 10:24 작성 조회수 60
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
user.username 이 어떻게 가능한가요? private 이어서 user.getUsername() 해야하는 것 아닌가요? 아니면, 서버 사이드에서 user.username 을 user.getUsername으로 바꿔주나요?
답변을 작성해보세요.
0
문상준
질문자2024.04.23
필드가 private이어도 접근가능하면 안되는 것 아닌가요? 브라우저에서 소스보기하면, 특정 클래스의 변수이름을 알 수 있으니까 보안적으로 문제가 되지는 않나요?
OMG
2024.04.24
필드가 private이지만, 결국 호출하는 것은 public 메서드인 getter를 호출하여 문제가 되지 않습니다 😀
User 클래스를 아래와 같이 직접 getter를 생성하고, getter에는 출력문을 추가하신 후,
static class User {
private String username;
private int age;
public User(String username, int age) {
this.username = username;
this.age = age;
}
public String getUsername() {
System.out.println("username = " + username);
return username;
}
public int getAge() {
System.out.println("username = " + username);
return age;
}
}
강의 초반에서 다루었던 SpringEL 표현식의 다양한 객체 접근 방식에 대해 모두 getter가 호출되는 것을 확인해보실 수 있습니다 😀
<h1>SpringEL 표현식</h1>
<ul>Object
<li>${user.username} = <span th:text="${user.username}"></span></li>
<li>${user['username']} = <span th:text="${user['username']}"></span></li>
<li>${user.getUsername()} = <span th:text="${user.getUsername()}"></span></li>
</ul>
답변 1