본문 바로가기

개발 관련 지식/Spring Framework Basic16

Security - Login Form 인증 요청이 들어오면 UsernamePasswordAuthenticationFilter를 거친다. AntPathRequestMatcher가 요청 URL 정보가 login(default) 인지 확인한다.(loginProcessingUrl("/login")) 매치되지 않는다면 다음 필터를 실행한다. URL 정보가 일치하면 Username + Password가 저장된 Authentication 인증 객체를 만든다. AuthenticationManager(인증 관리자)에 인증 객체를 넣어서 인증 처리를 실행한다. AuthenticationManager 내부에는 AuthenticationProvider 객체들을 가지고 있고, 그 중 하나를 선택해서 인증 처리를 위임한다. AuthenticationProvider 클래스.. 2022. 3. 29.
요청 메시지 - HttpEntity, @RequestBody HttpEntity, @RequestBody @ResponseBody 가 있다. HttpEntity는 요청 헤더와 바디를 직접 조회할 수 있다. @PostMapping("/request-body-string") public HttpEntity requestBody(HttpEntity httpEntity) throws IOException { String messageBody = httpEntity.getBody(); log.info("messageBody = {}", messageBody); return new HttpEntity("ok"); } @RequestBody : HTTP 메시지 바디를 직접 조회 @ResponseBody : 응답 결과를 HTTP 메시지 바디에 직접 담아서 전달할 수 있다. 물론.. 2022. 2. 19.
요청 파라미터 - @RequestParam, @ModelAttribute 요청 파라미터를 읽어올 수 있는 어노테이션들이다. queryString 혹은 HTML Form 으로 오는 데이터가 요청 파라미터이다. 메시지 바디를 조회하는 것은 HttpEntity가 지원한다. localhost:8080/request-param?username=abc&age=20으로 요청을 보내면 값을 읽을 수 있다. @RequestParam @ResponseBody @RequestMapping("/request-param") public String requestParam(@RequestParam("username") String memberName, @RequestParam("age") int memberAge) { log.info("username={}, age={}", memberName, me.. 2022. 2. 19.
@Autowired @Autowired 가 사용될 수 있는 곳이 세 군데 있다. 필드, 오버로드된 생성자, setter 메소드 필드에 @Autowired를 사용하면 기본 생성자를 통해서 객체가 생성될 때 필드에 적절한 객체가 참조된다. 오버로드 생성자나 setter 메소드에는 파라미터에 적절한 객체가 들어간다. @Autowired 시 적절한 객체가 없을 때에도 동작하게 할 수 있는 required = false 옵션이 있다. 그리고, 적절한 객체가 많을 때에 객체의 id로 특정 지을 수 있게 해주는 @Qualifier("")도 있다. 설정 파일에 context 네임스페이스와 가 있어야 컨테이너가 생성한 객체들 안에 어노테이션이 있는지 찾아본다. 이 있는 경우에는 @Component 를 찾으면서 @Autowired도 읽게 됨.. 2020. 5. 26.
MyBatis 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM 프레임워크 MyBatis는 SQL을 별도의 파일로 분리해서 관리하게 해주며, 객체-SQL 사이의 파라미터 Mapping 작업을 자동으로 해준다. MyBatis 주요 컴포넌트의 역할 MyBatis 설정파일 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정한다. SqlSessionFactoryBuilder MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다. SqlSessionFactory SqlSession을 생성한다. SqlSession MyBatis 설정 파일에 있는 SQL 실행이나 트랜잭션 관리를 실행한다. SqlSession 오브젝트는 Thread-Safe 하지.. 2020. 5. 5.
MVC 패턴의 개념과 모델2 아키텍쳐 MVC(Model-View-Controller) 패턴의 개념 소프트웨어 공학에서 사용되는 아키텍쳐 패턴으로 MVC 패턴의 주 목적은 Business logic과 Presentation logic을 분리하기 위함이다. Model 데이터 저장소(DB)와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 함. DAO클래스, Service 클래스에 해당함 View 모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면을 만드는 일을 함. 생성된 화면은 웹 브라우저가 출력하고, 뷰 컴포넌트는 HTML과 CSS, Java Script를 사용하여 웹 브라우저가 출력할 UI를 만든다. HTML과 JSP를 사용하여 작성할 수 있다. Controller 클라이언트의 요청을 받았을 때 .. 2020. 5. 3.