본문 바로가기

Spring

[Spring] 의존 관계 주입 방법 4가지 목차생성자 주입Setter 주입필드 주입일반 메서드 주입 ✨ 의존관계를 자동으로 주입할 객체가 Spring Bean으로 등록되어 있어야 `@Autowired`로 주입이 가능합니다. 생성자 주입생성자를 통해 의존성을 주입하는 방법입니다. (가장 추천되는 방식) 특징최초에 한번 생성된 후 값이 수정되지 못합니다.(불변, final) 예시 코드더보기올바른 코드@Componentpublic class HelloController { // 불변 private final HelloService helloService; // 생성자 주입 @Autowired public HelloController(HelloService helloService) { this.helloSe.. 더보기
[Spring] Bean 등록 방법 목차자동 Bean 등록(@ComponentScan, @Component)수동 Bean 등록(@Configuration, @Bean) ✅ Bean 등록 방법에는 수동, 자동 두 가지가 존재합니다. 자동 Bean 등록(@ComponentScan, @Component)Spring이 클래스에 붙은 annotation을 보고 자동으로 Bean으로 등록합니다. 예시코드// myService 라는 이름의 Spring Bean@Componentpublic class MyService { public void doSomething() { System.out.println("Spring Bean 으로 동작"); } }@Configuration@ComponentScan(basePackage.. 더보기
[Spring] Spring Bean 어떻게 등록될까? 목차간단하게 Bean이란?@ComponentScan@ComponentScan 기본 사용 예@ComponentScan의 동작 순서 간단하게 Bean이란?Spring IoC 컨테이너에 의해 관리되는 객체를 말합니다. 즉, 개발자가 직접 객체를 생성하거나 관리하지 않고, Spring이 대신 객체를 생성하고 생명주기를 관리합니다. ❓Bean이 IoC 컨테이너에의해 등록되는 방법 : `ComponentScan`을 통해! @ComponentScanSpring이 특정 패키지 내에서 `@Component` Annotaion이 붙은 클래스를 자동으로 검색하고, 이를 Spring IoC 컨테이너에 Bean으로 등록하는 기능입니다. 개발자가 Bean을 직접 등록하지 않고도 Spring이 자동으로 관리할 객체들을 찾습니.. 더보기
[Java] 자바 웹 기술의 역사 목차Servlet의 등장 (1997)JSP (Java-Server Pages)Servlet, JSP 기반의 MVC 패턴 도입MVC 프레임워크의 등장 : Struts, Spring MVC (2000~2010)Annotaion 기반의 Spring MVC (2007~현재)Spring Boot의 등장 (2014~현재) Servlet의 등장 (1997)등장 이유 : 1990년대 후반 CGI(Common Gateway Interface)는 각 요청마다 프로세스를 새로 생성해야 했기 때문에 성능 문제가 심각했습니다.이를 해결하기 위해 자바 기반의 고성능, 멀티스레드 방식 웹 서버 기술이 필요했습니다.개요 :자바로 작성된 서버 측 프로그램으로, 웹 요청을 처리하고 동적 콘텐츠를 생성합니다.`javax.servlet`.. 더보기
[Spring] SOLID 원칙과 Spring의 등장 배경 목차SOLID 원칙그럼 SOLID 원칙은 무적인가?Spring SOLID 원칙더보기1. 단일 책임 원칙 (SRP : Single Responsibility Principle) 정의 :클래스는 오직 하나의 책임만 가져야 합니다. 예제 코드 :❌ SRP 위반 예시 (한 클래스에 두 가지 책임)class Employee { public void work() { System.out.println("일하는 중.."); } pubilc void saveToDatabase() { System.out.println("데이터베이스에 저장 중..."); }}`Employee` 클래스는 업무 수행과 DB 저장이라는 두 가지 책임을 가집니다. ✅ SRP 준수 예시 (책.. 더보기
[Project] Lv_6 스케줄 프로젝트 목차요구사항요구 구현회고트러블 슈팅 요구사항설명✅ 유효성 검사잘못된 입력이나 요청을 미리 방지할 수 있습니다.데이터의 무결성을 보장하고 애플리케이션의 예측 가능성을 높여줍니다.Spring에서 제공하는 @Valid 어노테이션을 이용할 수 있습니다.조건✅ 할일은 최대 200자 이내로 제한, 필수값 처리✅ 비밀번호는 필수값 처리✅ 담당자의 이메일 정보가 형식에 맞는지 확인 요구 구현ScheduleController더보기@RestController@RequestMapping("/schedules")public class ScheduleController { private final ScheduleService scheduleService; public ScheduleController(Schedu.. 더보기
[Project] Lv_5 스케줄 프로젝트 목차요구사항요구 구현회고 요구사항설명✅ 예외 상황에 대한 처리를 위해 HTTP 상태 코드(링크)와 에러 메시지를 포함한 정보를 사용하여 예외를 관리할 수 있습니다.필요에 따라 사용자 정의 예외 클래스를 생성하여 예외 처리를 수행할 수 있습니다.@ExceptionHandler를 활용하여 공통 예외 처리를 구현할 수도 있습니다.예외가 발생할 경우 적절한 HTTP 상태 코드와 함께 사용자에게 메시지를 전달하여 상황을 관리합니다.조건✅ 수정, 삭제 시 요청할 때 보내는 비밀번호가 일치하지 않을 때 예외가 발생합니다.✅ 선택한 일정 정보를 조회할 수 없을 때 예외가 발생합니다.잘못된 정보로 조회하려고 할 때이미 삭제된 정보를 조회하려고 할 때 요구 구현❗예외처리가 포함되지 않는 클래스, 메서드 등 로직은 넣지.. 더보기
[Project] Lv_4 스케줄 프로젝트 목차요구사항요구 구현트러블 슈팅 요구사항설명✅ 많은 양의 데이터를 효율적으로 표시하기 위해 데이터를 여러 페이지로 나눕니다.✅ 페이지 번호와 페이지 크기를 쿼리 파라미터로 전달하여 요청하는 항목을 나타냅니다.✅ 전달받은 페이지 번호와 크기를 기준으로 쿼리를 작성하여 필요한 데이터만을 조회하고 반환조건✅ 등록된 일정 목록을 페이지 번호와 크기를 기준으로 모두 조회✅ 조회한 일정 목록에는 작성자 이름이 포함✅ 범위를 넘어선 페이지를 요청하는 경우 빈 배열을 반환✅ Paging 객체를 활용할 수 있음 요구 구현가독성을 위해 다른 구현 코드는 넣지 않고 페이지네이션 기능을하는 코드만 넣었습니다. ScheduleController더보기@GetMapping("/pages")@ResponseBodypublic .. 더보기