[Spring] 스프링 핵심 원리 - 기본편 섹션 6 컴포넌트 스캔 💨 컴포넌트 스캔과 의존관계 자동 주입 시작하기 지금까지 스프링 빈 등록은 @Bean을 이용했다. 근데 만약 수백개면 언제 일일히 등록할까...OTL 그래서 나온게 컴포넌트 스캔! 💚 컴포넌트 스캔 설정 정보가 없어도 자동으로 스프링 빈을 등록한다. 의존관계를 자동주입하는 @Autowired라는 기능도 제공한다. 컴포넌트 스캔을 사용하려면 @ComponentScan을 설정 정보에 붙여주면 된다. AppConfig.java는 남겨두고 새로운 AutoAppConfig.java를 만들자. @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType..
전체 글
[Spring] 스프링 핵심 원리 - 기본편 섹션 5 싱글톤 컨테이너 🟦 웹 애플리케이션과 싱글톤 대부분의 스프링 애플리케이션은 웹 애플리케이션고, 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 스프링 없는 순수한 DI 컨테이너는 위 그림처럼 고객이 요청할때마다 객체가 만들어진다. public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객..
✔ 문제 8320 직사각형을 만드는 방법 문제 바로가기 💨 8320번: 직사각형을 만드는 방법 상근이는 변의 길이가 1인 정사각형 n개를 가지고 있다. 이 정사각형을 이용해서 만들 수 있는 직사각형의 개수는 총 몇 개일까? 두 직사각형 A와 B가 있을 때, A를 이동, 회전시켜서 B를 만들 수 www.acmicpc.net 핵심 아이디어 PYTHON # 방법1. 가로 세로 탐색 N = int(input()) ans = 0 for i in range(1, N + 1): for j in range(i, N + 1): if i*j
https://leetcode.com/problems/search-a-2d-matrix/description/ Algorithm binary Search를 이용해 푸는 문제이다. 개인적으로 binarySearch를 연습할 수 있는 좋은 문제였다. python과 java의 각 모듈의 차이가 헷갈려 정리해보았다.. Python python은 bisect 모듈이 있다. 여기서 만약 값이 없으면 아래처럼 해당 값이 들어갈 인덱스를 반환한다. ([]처럼 비었으면 target값이들어갈인덱스 0을 리턴한다.) nums = [1, 3, 5, 7] target = 8 place = bisect_left(nums, target) print(place) # Output: 4 그래서 나는 특정 값을 찾고 없을땐 -1을 리턴해..
자바 ORM 표준 JPA 프로그래밍 - 기본편 섹션1 JPA 소개 ❌SQL을 직접 다룰 때 발생하는 문제점 ◻반복 작업 SQL작성, SQL실행, 객체 매핑,CRUD...지루함과 반복의 연속이다. ◻ SQL에 의존적인 개발 Member 클래스에 연락처를 추가하려면 SQL과 JDBC API를 수정해야한다. 또한 조회,수정 코드를 수정한다.수정에 끝이없다... ◻ 연관된 객체 회원이 어떤 한 팀에 소속되어야 한다는 요구사항이 추가되었다고 해보자. 이때 아래 코드에서 member.getTeam() null 에러가 발생했다. member.getTeam().getTeamName(); // 추가 코드를 살펴보니 연결된 MemberDAO 코드에는 (team조회가 빠져있는) find()메소드를 그대로 유지했다. 알고보니..
[Spring] 스프링 핵심 원리 - 기본편 섹션 4 스프링 컨테이너와 스프링 빈 ✨ 스프링 컨테이너 생성 ApplicationContext(인터페이스)는 스프링 컨테이너라고 하며, 아래를 이용해 구현체를 생성가능하다. new AnnotationConfigApplicationContext(AppConfig.class); 🪄 더 정확히는 스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext 로 구분해서 이야기한다. 이 부분은 뒤에서 설명! 🟢 스프링 컨테이너의 생성 과정 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다. 이때, 빈이름은 기본적으로 메서드 이름을 사용하여 아래를 사용해서 직접 부여할 수도있다. @Bean(name="memb..
[Spring] 스프링 핵심 원리 - 기본편 섹션 3 스프링 핵심 원리 이해1 - 새로운 할인 정책 개발 📄 새로운 할인 정책 개발 정률 % 할인 적용 👤 기획자: 정률 % 할인으로 바꿔야해요. 예를들어, 10%로 지정해두면 고객이 10000원 주문시 1000원을 할인해주고, 20000원 주문시에 2000원을 할인하게 바꿔주세요. 우리는 앞서 이 사태를 예상해 설계했으므로... 정률 할인 정책클래스를 만든다. public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.getGr..
✔ 문제 10163 색종이 문제 바로가기 💨 10163번: 색종이 평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘 www.acmicpc.net 핵심 아이디어 먼저 색종이 번호를 해당하는 색종이 영역에 표시한다. 그리고 count를 이용해 빈도수를 세어준다. 이때 풀이시간을 단축하고 코드를 최적화해보자.먼저 빈도수 체크를 할때 처음에는 for 각 번호들에 대해, 전체 배열에서 각 번호수를 count했다.하지만 빈도수 체크 배열을 만들면 전체 배열 탐색을 한번만 탐색해도 된다. 또한,배열 초기화를 for j (sj, sj + w) : arr[i][j] = [n] * w..
너무 오랫동안 블로그 글을 안썼네,,, 요즘은 아주 행복하게 지내는 중이다! 공부하다가 하기싫어져서 잡담글 업데이트... 사실 12~2월까진 인턴십과 여러 일들로 블로그글쓸 기력이 잠깐 사라졌었음... 3월초... 교수님과 면담을 했는데...무엇때문에 행복하냐고하셨다... ?...그러게요...저는 그냥... 제가 제 시간을 통제할 수 있는 지금이 너무 행복해요... 나를 이상하게 보시는 것 같았다...ㅎ 근데 다시생각해도 내가 행복한 이유는, 2년간 넘치는 무자비한 과제의 굴레와 회사프로젝트, 인턴십, 할일더미에서 벗어나 막학기인 이제야 스스로 여유가 생기고 취준생이지만 내가 공부하고 싶은 부분을 채우고있어서...진짜루 정말 너무 만족스런 요즘이다 히히 취준생이지만 매일 틀어박혀 공부하는 지금이 너무 행..
내가 골드라니! 사실 리트코드 프로그래머스를 중점으로 풀면서 백준을 소홀히 했었다. 한동안 프로그래머스 리트코드만 풀었으니...이제 백준을 좀 풀어볼까한다. 오늘 골드 레벨업을 했다.ㅎㅎ은근 레벨보는 재미가있다. 요즘은 정말 코테에 빠져 사는 것 같다. 재밌는데 단점은.. 시간이 너무 빨리간다; 아 수업 과제도 해야하는데 내일은 꼭 해야지... 미루고 미루다 왜 지금에야 알고리즘을 이렇게 열심히 하고있나싶다^^...사람은 역시 생존본능이 느껴질때 달리는 미련한 동물일까...? 하지만 그동안 너무 바빴다는 핑계...아닌 핑계...진짜 바빴어서 다시 돌아가도 지금처럼 시간투자못할듯....쩝.. 뭐,, 늦어서 시작할때가 가장 빠른거라했다 하핳... 정말 자료구조 알고리즘을을 알아가면서 새로운 세상에 눈 뜨고있..