Spring&SpringBoot
-
스프링 퀵 스타트 02Spring&SpringBoot 2025. 9. 17. 17:10
CLASS05. 어노테이션 기반 설정5.1.3 @Component 설정을 했으면 스프링 설정 파일에 클래스들을 으로 등록할 필요가 없다클래스 선언 부분에 @Component 설정해 줌으로써 스프링 컨테이너는 해당 클래스를 bean으로 생성하고 관리한다 5.2.1. 의존성 주입 어노테이션@Autowired : 주로 변수 위에 설정하여 해당 타입의 객체를 찾아서 자동으로 할당@Qualifier : 특정 객체 이름을 이용해 의존성 주입@Resources : @Autowired 같은 기능 제공@Inject : @Autowired, @Qualifier 기능을 결합한 어노테이션 5.2.3. @Qualifier의존성 주입 대상이 되는 Speaker 타입의 객체가 두 개 이상일 때 발생한다만약 SonySpeaker..
-
SpringSecurity 02Spring&SpringBoot/SpringSecurity 2025. 9. 16. 15:51
Ahthenticaion SecurityContext / SecurityContextHoldersecurityContextAuthentication 저장 : 현재 인증된 사용자의 Authentication 객체 저장ThreadLocal 저장애플리케이션 전반에 걸친 접근성 SecurityContextHolderSecurityContext 저장 : 현재 인증된 사용자의 Authentication 객체를 담고 있는 SecurityContext 객체 저장SecurityContextHolderStragey 인터페이스 사용하여 다양한 전략 패턴 사용기본 전략 : MODE_THREADLOCAL전략모드 직접 지정 : SecurityContextHolder.setStrategyName(String) Secur..
-
스프링 퀵 스타트 01Spring&SpringBoot 2025. 9. 16. 14:02
DAY01CLASS02. 프레임워크 개요2.2.2 스프링 프레임워크 특징1. 경량(lightweight)- 크기 측면에서 가볍기 때문이다 (하나 이상의 JAR 파일로 이루어진 여러 개의 모듈로 구성)- POJO 형태의 객체 (클래스를 구현하는데 특별한 규칙이 없는 단순하고 가벼운 객체) 를 관리하기 때문이다 2. 제어의 역행(IoC)- 객체 생성을 자바 코드로 직접 처리하는 것이 아니라 컨테이너가 대신 처리- 객체 사이의 의존관계 역시 컨테이너가 처리- 즉, 소스 의존관계가 명시되지 않으므로 결합도가 떨어져 유지보수가 편리해진다3. 관점지향 프로그래밍(AOP)- 공통으로 사용하는 기능들을 외부의 독립된 클래스로 분리하고 해당 기능을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리- 응집도 높은 비즈니..
-
SpringSecurity 01Spring&SpringBoot/SpringSecurity 2025. 9. 15. 17:12
SecurityFilterChain 타입 빈을 정의한 후 인증 API 및 인가 API 설정인증 API : 사용자나 시스템이 자신을 증명하는 과정"너 누구야?"ID+비밀번호, 토큰(JWT, OAuth2 Access Token) 등인가 API : 인증된 사용자가 요청한 리소스나 기능에 접근 권한이 있는지 검사"너 뭐 할 수 있어?"권한(ROLE), 정책에 따라 접근 허용/거부 @RestControllerpublic class IndexController { @GetMapping("/") public String index() { return "index"; }}@EnableWebSecurity@Configurationpublic class SecurityConfig { @..
-
[스프링MVC - 2편] 로그인 처리1 - 쿠키, 세션Spring&SpringBoot 2025. 3. 4. 20:30
패키지 구조 설계package 구조hello.logindomainitemmemberloginwebitemmemberlogin도메인이 가장 중요하다도메인 = 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다이렇게 하려면 web은 domain을 알고있지만 domain은 web을 모르도록 설계해야 한다이것을 web은 domain을 의존하지만, domain은 web을 의존하지 않는다고 표현한다 홈 화면HomeController - home() 수정@GetMapping("/")public String home() { return "home";} - templates/home.html..
-
[스프링MVC - 2편] 검증 (4)Spring&SpringBoot 2025. 3. 2. 16:03
Form 전송 객체 분리 실무에서는 groups를 잘 사용하지 않는데 등록시 폼에서 전달하는 데이터가 Item 도메인 객체와 딱 맞지 않기 때문이다그래서 보통 Item을 직접 전달받는 것이 아니라, 복잡한 폼의 데이터를 컨트롤러까지 전달할 별도의 객체를 만들어서 전달한다폼 데이터 전달에 Item 도메인 객체 사용HTML Form -> Item -> Controller -> Item -> Repository장점: Item 도메인 객체를 컨트롤러, 리포지토리 까지 직접 전달해서 중간에 Item을 만드는 과정이 없어서 간단하다단점: 간단한 경우에만 적용할 수 있다 수정시 검증이 중복될 수 있고, groups를 사용해야 한다폼 데이터 전달을 위한 별도의 객체 사용HTML Form -> ItemSaveForm -..
-
[스프링MVC - 2편] 검증 (3)Spring&SpringBoot 2025. 3. 2. 15:37
Bean Validation검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 Bean Validation이다Bean Validation을 잘 활용하면, 애노테이션 하나로 검증 로직을 매우 편리하게 적용할 수 있다 Item - Bean Validation 애노테이션 적용public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Integer quantity; //...}검증 ..
-
[스프링MVC - 2편] 검증 (2)Spring&SpringBoot 2025. 2. 9. 19:27
오류 코드와 메시지 처리 1errors 메시지 파일 생성errors.properties라는 별도의 파일로 관리한다FieldError, ObjectError의 생성자는 codes, arguments를 제공하며 이것은 오류 발생시 오류 코드로 메시지를 찾기 위해 사용된다 스프링 부트 메시지 설정 추가// application.propertiesspring.messages.basename=messages,errors// src/main/resources/errors.propertiesrequired.item.itemName=상품 이름은 필수입니다.range.item.price=가격은 {0} ~ {1} 까지 허용합니다.max.item.quantity=수량은 최대 {0} 까지 허용합니다.totalPriceMin..