
관심사의 분리 애플리케이션을 하나의 공연이라고 생각하자. 1. 각각의 인터페이스를 배우 역할(로미오, 줄리엣 ... )이라고 설정 2. 배우는 배역에만 집중해야만 한다. 3. 배우를 섭외하고, 역할에 맞는 배우를 지정하는 것은 별도의 공연 기획자가 있어야 하는 것이다. 인터페이스(배역), 구현체(배우), 그리고 이를 담당하는 AppConfig(공연 기획자) AppConfig 이를 통해 구현체에 의존하지 않고, 인터페이스에만 의존할 수 있게 된다. IoC( Inversion of Control ) 제어의 역전, 제어권이 뒤바뀐 것을 의미한다. 기존에는 클라이언트 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 반면, AppConfig를 사용하면서 구현 객체는 자신의 로직을 실행하기만 하고 프로그램의 ..

해결방법 문제를 보고 모든 경우의 수를 확인해야 겠다는 생각을 했습니다. d(n) = n + n의 각 자리수의 합을 구하는 함수 여기서 n을 d(n)의 생성자라고 하는데, 이 생성자가 없는 수를 셀프 넘버라 하고, 이를 구하는 문제입니다. 1부터 10000까지 루프를 돌면서 d(n)함수가 진행되는 숫자들을 기록하고, 이에 해당하지 않는 수를 루프를 돌며 출력하여 해결하였습니다. 코드 package baekjoon; public class J4673 { static int[] arr = new int[10001]; static void d(int n) { int sum = 0; for(int i=0; i

스프링의 탄생 기존의 자바 표준 기술인 EJB(Enterprise Java Beans) -> 이론적으로 좋았지만 어렵고 느렸던... Rod Johnson이 책을 출간한 후 오픈소스 프로젝트를 진행하게 된다. EJB라는 겨울을 넘어 새로운 시작이라는 뜻로 spring, 봄이라 지었다. 스프링 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원 .... 스프링 부트 - 스프링을 편리하게 사용할 수 있도록 지원, 최근은 Default Tomcat 같은 웹 서버를 내장하여 별도의 웹 서버가 필요하지 않기에 단독으로 스프링 애플리케이션 생성 가능 starter 종속성 제공 (..

JDBC( Java DataBase Connectivity ) 자바에서 데이터베이스에 접근할 수 있도록 하는 API ( DBMS와 애플리케이션의 매개체 ) 이전의 인터페이스 구현 클래스를 기존 코드를 손대지 않고 스프링 DI를 통해 변경할 수 있다. ( Open-Closed Principle ) 통합 테스트 테스트 시 @Transactional을 적용해보자 이전 테스트 시 메모리를 초기화 할 때 사용한 @AfterEach와 같은 맥락, DB를 커밋하기 전 삭제(롤백)하는 역할을 해준다. 스프링 JDBCTemplate JDBC API에서 반복되는 코드를 제거해준다. 단, sql은 직접 작성해야 함 JPA( Java Persistance API ) ORM( Object-Relational Mapping ) ..

회원 관리 예제 만들어보기 컨트롤러 : 웹 MVCdml 컨트롤러 역할 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장 서비스 : 핵심 비즈니스 로직 구현 도메인 : 비즈니스 도메인 객체(회원, 주문 등 ..), DB에 저장됨 테스트케이스 - main메서드 실행하거나, 컨트롤러를 통해 해당 기능을 실행하여 검증하기는 오래걸리고 반복이 어렵다. JUnit 프레임워크를 통해 이를 해결할 수 있다. 짧게 배운 테스트 해보기 Test 패키지에 테스트하려는 대상Test 클래스 생성 후 @Test를 사용한다. (Test라는 것을 알려줌) 테스트는 순서가 랜덤, 각 테스트들끼리는 의존적이지 않아야 한다. 각 테스트가 끝난 후 테스트에 사용한 객체를 초기화 해줘야 한다. (보통 @AfterEach를 사용한다고 한..

스프링 프레임워크(Spring Framework) - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크 장점 - 경량 컨테이너, IoC(Invertion of Control 제어역행) DI(Dependency Injection 의존성 주입), AOP(Aspect-Oriented Programming 관점 지향 프로그래밍) 스프링 부트(Spring Boot) - 스프링 프레임워크 기반의 애플리케이션 ( 경량화, 더 잘 사용할 수 있는 스프링 ) 장점 - Dependency의 관리가 쉽다. Embedded server - Tomcat이 내장되어 서버 구동 시간이 짧다. 내장 서블릿 컨테이너로 Jar 파일로 간단 배포가 가능 라이브러리 Gradle은 의존 관계가 있는 라이브러리들을 함께 다운로드해준다. In..
기본 API 클래스 java.lang 패키지 - 자바 프로그램의 깁적인 클래스를 담고 있는 패키지, import 하지 않아도 사용 가능 Object 클래스 - 모든 클래스의 최고 조상 equals(Object obj), 객체의 주소를 비교, 대게 overrding 하여 인스턴스 변수의 값을 비교한다. hashCode(), 객체의 해시코드를 반환하는 메서드, 다량의 데이터 저장 및 검색 시 사용, 객체의 내부 주소 반환 toString(), 객체의 문자 정보를 리턴, 클래스이름@16진수해시코드 정보 리턴 String 클래스 - 문자형 배열과 그에 관련된 메서드들이 저의되어 있음 String인스턴스의 내용은 바꿀 수 없다, 새로운 Stirng인스턴스가 생기는 것 StringBuffer 클래스 - String..
스프링을 제대로 학습하기 전 자바의 기초 지식을 잡기 위해 복습했던 기록입니다. 상속(Inheritance) 기존의 클래스를 재사용하여 중복되는 코드를 줄일 수 있다. -> class 자식클래스 extends 부모클래스 {} 다중 상속이 불가능하고, 접근 제한자의 종류에 따라 상속이 불가능 한 경우가 있다. super()를 통해 부모의 생성자를 호출할 수 있다. Overriding - 메소드 재정의, 부모 클래스의 메소드를 자식 클래스에서 재저의 한다. - 동일한 시그니처를 가져야 하고, 접근 제한자를 더 강하게 재정의 불가, 새로운 예외처리 불가 final 클래스는 부모 클래스가 될 수 없다. final 메소드는 overriding이 불가능하다. 다형성 - 어떤 객체의 속성이나 기능이 상황에 따라 여러..