목록BE/Spring (178)
오봉이와 함께하는 개발 블로그
개요 서버에서 패스워드를 암호화하여 DB에 넣는 작업을 하고 싶었다. 블로그에 기록하진 않았지만, 전에 한 번 사용해 봤으나 기억이 나지 않아 블로그에 기록해 보려 한다. BCryptPasswordEncoder BCryptPasswordEncoder란 Spring Security에서 제공하는 클래스 중 하나로, 암호화하는 데 사용할 수 있는 메소드를 가진 클래스다. Spring Security(이하 스프링 시큐리티)는 자바 서버 개발을 위해 필요로 하는 인증, 권한 부여 및 보안 기능을 제공하는 프레임워크다. BCryptPasswordEncoder는 사용자가 제출한 문자열을 인코딩 해주고, DB에 저장된 값과 비교할 수 있게 기능을 제공하고 있다. 기본적으로 웹 사이트를 개발할 때 값은 DB에 저장한다...
스코프와 Provider 간단하게 ObjectProvider를 사용해서 해결하자 ObjectProvider @Controller @RequiredArgsConstructor public class LogDemoController { private final LogDemoService logDemoService; private final ObjectProvider myLoggerProvider; @RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request) { String requestURL = request.getRequestURL().toString(); MyLogger myLogger = myLogg..
웹 스코프 웹 스코프는 웹 환경에서만 동작한다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리하기 때문에 종료 메소드가 호출된다. 웹 스코프의 종류 request HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프 각각 HTTP 요청마다 별도의 빈 인스턴스가 생성되고 관리된다. session HTTP Session과 동일한 생명주기를 가진다. application 서블릿 컨텍스트(ServletContext)와 동일한 생명주기를 가진다. websocket 웹 소켓과 동일한 생명주기를 가진다. request 스코프 예제 만들기 우선 웹 스코프를 위해 웹 환경을 추가하자. // build.gradle에 추가 implementation 'org.springframewo..
프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Provider로 문제 해결 싱글톤 빈과 프로토타입을 같이 사용할 때 어떻게 하면 항상 새로운 프로토타입 빈을 생성할 수 있을까? static class ClientBean { @Autowired private ApplicationContext ac; public int logic() { PrototypeBean prototypeBean = ac.getBean(PrototypeBean.class); prototypeBean.addCount(); int count = prototypeBean.getCount(); return count; } } ac.getBean()을 통해 항상 새로운 프로토타입 빈이 생성되는 것을 확인할 수 있다. 의존관계를 외부에서 주입(..
프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점 프로토타입 스코프의 빈을 요청하면 항상 새로운 객체 인스턴스를 생성해서 반환한다. 하지만, 싱글톤 빈과 함께 사용할 때는 의도한대로 동작하지 않기 때문에 주의해야 한다. 프로토타입 빈 직접 요청 클라이언트A는 스프링 컨테이너에 프로토타입 빈을 요청 스프링 컨테이너는 프로토타입 빈을 새로 생성해서 반환(x01). 해당 빈의 count 필드 값은 0이다. 클라이언트는 조회한 빈에 addCount()를 호출해서 count 필드를 +1 한다. 결과적으로 프로토타입 빈(x01)의 count는 1이 된다. 클라이언트B는 스프링 컨테이너에 프로토타입 빈을 요청 스프링 컨테이너는 프로토타입 빈을 새로 생성해서 반환(x02). 해당 빈의 count 필드 값은 0이다...