- 여기서 요청 Param 즉 쿼리 Param을 View에 전달하기 위한 방법
1) Controller에서 HttpServletRequest에서 요청 파라미터를 Model에 담아 View로 랜더링 해준다.
@GetMapping("/basic-objects")
public String basicObjects(HttpSession httpSession, HttpServletRequest httpServletRequest, Model model){
httpSession.setAttribute("sessionData","Hello Session");
model.addAttribute("paramData",httpServletRequest.getParameter("paramData"));
return "basic/basic-objects";
}
<li> <span th:text="${paramData}"></span></li>
2) Thymleaf에서 제공하는 문법을 사용한다.
<li>request = <span th:text="${param.paramData}"></span></li>
<li>request = <span th:text="${session.sessionData}"></span></li>
<li>request = <span th:text="${@helloBean.hello}"></span></li>
-> Thymleaf에서는 쿼리파람을 자주 사용하기 때문에 Controller에서 랜더링 해주지 않아도 사용가능!
- 기본 MVC를 공부하다가 그냥 당연하게 등록하고 사용하던 Bean등록 방법에 대한 궁금증에 다시 정리.
- 메소드 레벨에 작성이 가능하다 = 우리가 외부 라이브러리( 수정 불가한 만들어진 클레스 )를 사용한다면,
싱글톤을 보장하면서 Bean으로 등록 할 수 있다는 말이다.- 메소드의 return new ~~ 로 생성한 객체를 빈으로 등록한다.
- Spring Security에서 passwordEncoder를 사용한 예시
package com.sparta.soomtut.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
public class PasswordEncoderBean {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
- @Bean 어노테이션이 붙은 메소드를 통해 빈으로 등록할 때, 그걸 알려주는 부분이라고 생각하면 편함.
- 위와 같이 수동으로 @Bean을 등록할 필요가 없을 때 = 개발자가 class수정이 가능한 경우
클레스 레벨에 붙여줌으로써 Bean으로 등록하기 위함.