본문 바로가기

Frameworks/Spring7

[Spring] Spring Security Spring Security스프링 기반의 애플리케이션 보안(인증,인가,권한)을 담당하는 스프링의 하위 프레임워크필터 기반으로 동작어노테이션 만으로 쉽게 설정가능CSRF, 세션고정공격을 방어하고 요청 헤더 또한 보안처리를 해준다. -> 개발자가 보안 관련 개발을 해야하는 부담이 사라짐Authentication & Authorization인증 (Authentication)신원을 입증하는 과정, 로그인을 하면 누구인지 확인하는 과정인가 (Authorization)사이트 특정부분에 접근 권한이 있는지 확인SecurityContextPersistenceFilter부터 시작해서 아래로 내려가면 FilterSecurityInterceptor까지 순서대로 필터를 거친다.필요할 때 특정 필터를 제거하거나 필터 뒤에 커스.. 2025. 4. 11.
[Spring] BeanDefinition 스프링 빈 설정 메타 정보 (BeanDefinition)추상화역할과 구현을 개념적으로 나눔자바코드,XML을 읽어서 BeanDefinition을 만든다.스프링컨테이너는 자바 코드인지, XML인지 알 필요는 없다. 오직 BeanDefinition만 알면된다.BeanDefinition을 빈 설정 메타 정보라고 한다.@Bean, 당 각각 하나씩 메타 정보가 생성된다.스프링 컨테이너는 이 메타 정보를 기반으로 스프링 빈을 생성한다.AnnotitionConfigApplicationContext는 AnnotatedBeanDefinitioReader를 사용해서 AppConfig.class를 읽고, BeanDefinition을 생성한다.GenericXmlApplicationContext는 XmlBeanDefinition.. 2025. 4. 11.
[Spring] 스프링 컨테이너 & 빈 스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);ApplicationContext를 스프링 컨테이너라고 한다.ApplicationContext는 인터페이스다.스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.AppConfig를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다.자바 설정 클래스를 기반으로 스프링 컨테이너(ApplicationContext)new AnnotationConfigApplicationContext(AppConfig.class);이 클래스는 Applica.. 2025. 4. 11.
[Spring] Ioc,DI,Container 제어의 역전 (IoC, Inversion of Control)기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행한다. 즉, 구현객체가 프로그램의 제어 흐름을 스스로 컨트롤 한다. 개발자 입장에서는 자연스러운 흐름이다.반면 AppConfig가 등장한 이후 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다.예를들어 OrderServiceImpl은 필요한 인터페이스를 호출하지만 어떤 구현 객체들이 실행될지는 모른다.프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. AppConfig는 다른 OrderService 인터페이스의 다른 구현 객체를 생성하고 실행할 수도 있다. 그런.. 2025. 4. 11.
[Spring] 객체 지향 프로그래밍 객체지향 프로그래밍컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 객체들의 모임으로 파악하고자 하는것각각의 객체는 메세지를 주고받고, 데이터를 처리할 수 있다.프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법다형성 (Polymorphism)하나의 객체나 메서드가 여러가지 다른 형태를 가질 수 있는 것을 말한다.자바 언어의 다형성오버라이딩, 상속 클래스자바에서는 상위 클래스 타입의 참조 변수로 하위 클래스 타입의 인스턴스를 참조할 수 있도록 구현하고 있다.instanceof연산자를 통해, 참조 변수가 참조하는 인스턴스의 실제 타입을 확인할 수 있게 해준다. 역할과 구현으로 구.. 2025. 4. 11.
[Spring] Bean Bean스프링 컨테이너가 관리하는 자가 객체를 빈이라고 한다.스프링 컨테이너스프링 빈의 생명 주기르 ㄹ관리하며, 생성된 스프링 빈들에게 추가적 기능을 제공한다.IoC, DI제어의 흐름을 외부에서 관리한다.객체간 의존관계를 스프링 컨테이너가 런타임 과정에서 만들어 준다.스프링 빈 등록하기ComponentScan생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아 넣어준다.이처럼 객체 의존관계를 외부에서 넣어주는것을 DI(Dependenct Injection),의존성 주입 이라고 한다.@Component 어노테이션이 있으면 스프링 빈으로 자동 등록된다.@Controller, @Service, @Repository -> 해당 어노테이션을 들여다보면 @Component를 내장하고.. 2025. 4. 11.