이론/Spring14 [Spring Boot] Spring Security 📌 인증 Authentication 사이트에 접근하는 사람이 누구인지 시스템이 알기 위한 방식. 익명 사용자 anonymous user 를 허용하는 경우도 있지만 특정 리소스에 접근하거나 개인화된 사용성을 보장 받기 위해서는 반드시 로그인 하는 과정이 필요하다. 로그인은 보통 username/ password를 입력하고 로그인 하는 경우와 sns 사이트를 통해 인증을 대리하는 경우가 있다. 📌 인가 혹은 권한 Autnorization 사용자가 누구인지 알았다면 사이트 관리자 혹은 시스템은 로그인한 사용자가 어떤 일을 할 수 있는지 권한을 설정한다. 권한은 특정 페이지에 접근하거나 특정 리소스에 접근할 수 있는 권한 여부를 판단하는데 사용된다. 개발자는 권한이 있는 사용자에게만 페이지나 리소스 접근을 허용.. 2021. 8. 15. [Spring Boot] Spring MVC 구조 / 핸들러 매핑과 핸들러 어댑터 📌 DispatcherServlet 서블릿 DispatcherServlet 도 부모 클래스에서 HttpServlet을 상속 받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet -> FrameworkServlet -> HttpServletBean -> HttpServlet 스프링 부트는 DispatcherServlet을 서블릿으로 자동으로 등록하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다. 참고 : 더 자세한 경로가 우선순위가 높다. 요청 흐름 서블릿이 호출되면 HttpServlet이 제공하는 service()가 호출된다. 스프링 MVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service()를 오버라이드 해두었다. Framewo.. 2021. 8. 8. [Spring] 컴포넌트 스캔과 의존관계 자동 주입 시작하기 📌 컴포넌트 스캔과 의존관계 자동 주입 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열하는 방식이 있다. 하지만 이렇게 등록해야 할 스프링 빈이 수십, 수백 개가 되면 일일히 등록하기도 귀찮고, 설정 정보도 커지고.. 이런 저런 단점들이 많지만,,,, 무엇보다 귀찮다 ; 그래서 스프링이 제공하는 것이 컴포넌트 스캔 ComponentScan 이다. 여기에 의존 관계도 자동으로 주입해주는 @Autowired라는 기능도 제공한다. 컴포넌트 스캔을 사용하려면 먼저 @ComponenetScan을 설정 정보에 붙여주면 된다. 기존의 AppConfig와는 다르게 @Bean으로 등록한 클래스가 하나도 없다. 참고 컴포넌트 스캔을 사용하면 @Config.. 2021. 8. 1. [Spring] @Configuration과 바이트코드 조작 📌 @Configuration과 바이트코드 조작 스프링 컨테이너는 싱글톤 레지스트리다. 스프링 빈이 싱글톤이 되도록 보장해주는 구조다. 그런데 스프링 안에서 자바 코드는 어떻게 관리될까. 결론부터 말하자면 스프링은 클래스의 바이트코드를 조작하는 라이브러리를 사용한다. @Configuration을 적용한 AppConfig에서 더 확실히 알 수 있다. 사실 AnnotationConfigApplicationContext에 파라미터로 넘긴 값은 스프링 빈으로 등록된다. 그래서 AppConfig도 스프링 빈이 된다. AppConfig 스플링 빈을 조회해서 클래스 정보를 출력하면 다음과 같은 결과가 나온다. bean = class com.company.shop.AppConfig$$EnhancerBySpringCGL.. 2021. 7. 26. [Spring] BeanFactory와 ApplicationContext / 스프링 컨테이너 📌 스프링 컨테이너 ? 스프링에서 빈을 관리하고 생성하는 컨테이너. 흔히 , ApplicationContext로 알려져 있는데 이 인터페이스는 사실 BeanFactory의 상속을 받고 있다. 그렇다면 둘의 차이는 뭘까. 궁금해서 찾아봤다. BeanFactory 스프링 컨테이너의 최상위 인터페이스다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean()을 제공한다. 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory 가 제공해주는데, 둘의 차이는? 애플리케이션을 개발할 때는 빈은 관리하고 조회하는 기능은 물론이고, 수많은 .. 2021. 7. 25. [Spring] 스프링 컨테이너에 등록된 빈 조회 / Bean 조회 / 출력 📌 스프링 빈 출력 모든 빈 출력하기 실행하면 스프링에 등록된 모든 빈 정보를 출력할 수 있다. ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름을 조회한다. -> 28번 라인 ac.getBean(빈이름, 타입) or ac.getBean(타입) : 빈 이름으로 빈 객체(인스턴스)를 조회한다. -> 35번 라인 애플리케이션 빈 출력하기 스프링이 내부에서 사용하는 빈은 제외하고, 내가 등록한 빈만 출력해보자. 스프링이 내부에서 사용하는 빈은 getRole()로 구분할 수 있다. -> 34번 라인 ROLE_APPLICATION : 일반적으로 사용자가 정의한 빈 ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈 📌 스프링 빈 조회 - 기본적인 조회방법 ac... 2021. 7. 24. 이전 1 2 3 다음