본문 바로가기

전체 글

(281)
Spring Validation BindingResult Validation 오류를 보관하는 객체여기서 검증할 때 사용했던 객체임! @PostMapping public ResponseEntity createSchedule(@RequestBody @Valid ScheduleSaveRequestDto requestDto, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new InvalidRequestException(INVALID_REQUEST_EXCEPTION); } return new ResponseEntity(scheduleService.saveSchedule(requestDto), HttpSt..
Spring 의존관계 주입 방법 : Constructor, Setter, Field 의존관계 주입 방법@Autowired : 스프링이 스프링 컨테이너에 등록된 빈의 의존성을 주입해 줄 때 사용1. 생성자 주입최초에 한번 생성된 후 값이 변경되지 못함 = 불변필드에 final을 유일하게 가짐 -> 유일하게 객체가 생성될 시점에 의존관계가 주입되면서 필드의 값이 생성@Autowired public MyApp(MyService myService) { this.myService = myService; } 2. Setter 주입변경 가능한 의존관계에 사용@Autowired public void setMyService(MyService myService) { this.myService = myService; }  3. 필드 주입 (사용하지 말 것)클래..
K번째수 / 프로그래머스 정답리스트의 얕은 복사 = 값 복사를 하는 방법copy_list = list(origin_list)copy_list = origin_list[:]copy_list = origin_list.copy()def solution(array, commands): answer = [] for i in commands: copy_list = list(array) slice_list = copy_list[i[0]-1:i[1]] slice_list.sort() answer.append(slice_list[i[2]-1]) return answer
Spring Container와 Spring Bean Spring Container스프링 애플리케이션에서 객체를 생성, 관리, 소멸하는 역할Bean(Spring Container에 의해 관리되는 객체)을 생성 및 관리Bean 간의 의존 관계(A객체에서 B객체를 사용하는 것)를 스프링이 설정Spring Container의 최상위 인터페이스인 BeanFactory의 확장된 형태인 ApplicationContext를 의미함-> Spring Container를 통해서 OCP, DIP 준수할 수 있음 Spring BeanSpring Container에 의해 관리되는 객체Singleton으로 설정 (= 클래스의 인스턴스가 오직 하나만 생성되도록 보장)존성 주입(DI)을 통해 다른 객체들과 의존 관계를 맺음생성, 초기화, 사용, 소멸의 생명주기 Spring Bean 등..
SOLID 원칙과 다형성의 한계(OCP, DIP) 단일 책임 원칙 SRP(Single Responsibility Principle)하나의 클래스는 한 가지의 책임만 가져야 함클래스가 변경될 때 파급 효과가 작아야 함예시단일책임 원칙 위반User 클래스는 사용자 정보, 로그인기능, 사용자정보를 데이터베이스에 저장하는 내용 3가지의 기능을 모두 수행하고 있음public class User { private String name; // 사용자 정보 public void login() { /* 로그인 기능 */ } public void saveUser() { /* 데이터베이스 저장 기능 */ }} 단일 책임 원칙 적용User는 사용자의 정보만 관리하고, 서비스는 로그인 기능을 담당하고, 리포지토리는 데이터베이스에 사용자 정보를 저장하는 기능 담..
문자열 내맘대로 정렬하기 / 프로그래머스 첫 번째 접근인덱스로 뽑은 키들과 원래 문자열을 딕셔너리로 만들기키를 정렬한 후 정렬된 키를 바탕으로 새로운 딕셔너리 만들기중복 키 처리가 곤란함s = ["csdf", "bbb", "cccc"]n = 1dic = {}idx = []for i in s: dic[i[n]] = iprint(dic.keys())sorted_key = sorted(dic.keys())new_dic = {}for i in sorted_key: new_dic[i] = dic[i]print(new_dic.values()) 정답키를 뽑은 인덱스와 원래값을 함께 담은 리스트생성인덱스 순으로 정렬하고, 인덱스가 동일하다면 원래 문자열값과 비교def solution(strings, n): answer = [] num =..
연관관계 설정, 페이징, @ExceptionHandler를 적용한 일정 관리 서버 리팩토링 ERD 에서 일정과 작성자를 분리일정 테이블과 회원 테이블을 분리회원 : 일정 = 1 : N 관계pk는 aoto increment로 자동 증가되도록 관리 테이블 생성 쿼리 일정 엔티티와 회원 엔티티 생성회원 엔티티@Getter@AllArgsConstructorpublic class Member { private Long id; private String name; private String email; private LocalDateTime createDate; private LocalDateTime updatedDate;} 일정 엔티티 @Getter@AllArgsConstructorpublic class Schedule { private Long id; privat..
숫자 문자열과 영단어 / 프로그래머스 정답 (replace 사용 버전)dictionary.items(): 딕셔너리의 키벨류 값을 동시에 가져옴print(num_dict.items())# dict_items([('zero', '0'), ('one', '1'), ('two', '2'), ..., ('nine', '9')])s.replace(key, value) : key를 value값으로 변경해줌def solution(s): dictionary = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"} for key, value in dicti..