목록분류 전체보기 (45)
Min's dev-log
스프링 컨테이너 자바 객체(Bean)의 생명 주기(생성, 관리, 제거 등)를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링 컨테이너는 xml, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 컨테이너의 종류 1) BeanFactory 스프링 컨테이너의 최상위 인터페이스로 bean객체를 관리하고 조회하며, getBean() 메서드를 통해 객체화 할 수 있다. @Bean 어노테이션이 붙은 메서드의 이름을 스프링 bean의 이름으로 사용하여 등록한다. 2) ApplicationContext 일반적으로 스프링 컨테이너라고 하면 ApplicationContext를 의미한다. BeanFactory 기능을 모두 상속받아서 제공하며 이외에 부가 기능을 제공한다. - MessageSou..

AOP는 결합시점도 설정해줄 수 있다. 1. before : 메서드 수행 전에 동작 2. after : 메서드 수행 종료 후에 동작 3. after-returning : 반환 이후에 동작 4. after-throwing : 예외가 발생해야지만 동작 5. around

AOP에 대해 더 알아보자. 스프링 프레임워크에서는 높은 응집도를 통해 유지보수 용이한 코드를 작성할 수 있는 AOP를 지원한다. AOP (Aspect Oriented Programming) 관점지향 프로그래밍 OOP 객체지향 프로그래밍 : OOP의 한계 (dao 중점적 코딩 - dao는 디비랑 관련된 아이니까 매번 비슷한 로직 여러번 등장함 -> JDBCUtil) 비슷한 로직의 코드가 여러번 등장하는 상황이 있다. ex) JDBCUtil : AOP의 시작이라고 볼수있는 예시상황 CRUD(비즈니스 메서드, 핵심 로직) + 횡단관심(공통로직 - OOP를 쓰고 있다면 낄 수 밖에 없다) AOP에서는 횡단로직 완전히 빼낼 수 있다. AOP에서는 완전 분리한 공통 로직 코드들이 각각 클래스화 되어있다. => 응..
프레임워크를 사용하는 이유? 개발을 어떻게 해야하는지 아웃라인을 제공한다. 다양한 프로그래밍 언어를 사용하다보면 체계적인 구조를 잡고, 추후에 유지보수를 쉽게하기 위해 사용하곤 한다. ★ 사용하는 이유 1) 개발시간 단축, 개발비용 절감 2) 관리가 용이 == "유지보수" 용이 3) 개발자들의 실력이 상향 평준화(구조에 대해 모르는 사람도 쓸수있음) 스프링 프레임워크 " IOC와 AOP를 지원하는 경량의 프레임워크 " 재사용성이 향상된 애플리케이션을 개발할 수 있다. 1) IOC (Inversion of Control) 제어의 역행 DI(의존성 주입), 객체화를 컨테이너가 처리한다. 제어의 역행: 기존에 개발자가 했던것(new하는 것)을 컨테이너,프레임워크가 해줄 것 new를 개발자로 부터 가져감으로써 ..

사용자의 요청이 라라벨에서 어떻게 처리되는지 살펴보자. 1. 시작 라라벨 애플리케이션에서 모든 요청은 index.php 파일에서 시작한다. 이 파일은 컴포저가 생성한 오토로더를 정의하며 bootstrap/app.php 스크립트를 참고하여 라라벨 애플리케이션의 인스턴트를 가져오며 서비스 컨테이너를 생성한다. 서비스 컨테이너에서 의존성 주입을 관리, 실행하며 다음 단계로 진행한다. index.php 파일은 시작점이기 때문에 코드 양이 적게 유지되는 것을 권장한다! 2. Console Kernel과 Http Kernel 일반적으로 web 요청 처리를 위해 Http Kernel, 커맨드 명령 처리를 위해Console Kernel로 요청이 분배된다. Http Kerel에서는 요청이 처리 되기전에 수행되어야 하는 ..

프레임워크를 사용하는 이유? 다양한 프로그래밍 언어를 사용하다보면 체계적인 구조를 잡고, 추후에 유지보수를 쉽게하기 위해 사용하곤 한다. 라라벨이란? PHP 기반의 웹 애플리케이션 개발을 위한 오픈소스 프레임워크로 2011년에 출시되었다. 작성이 간단하며 문법 구조가 쉽고 코드 가독성이 좋다. 1) MVC 패턴 사용자 인터페이스로부터 비즈니스 로직을 분리하여 서로 영향없이 독립적으로 유지보수가 가능하다. 2) 객체 지향 라이브러리 PHP 프레임워크로 모듈형 객체 지향 라이브러리와 함께, 강력한 웹 애플리케이션 개발에 필요한 추가적인 도구들도 얻게된다. 3) 명령 줄 인터페이스 일반적으로 텍스트로 명령을 처리하기 때문에, 설치 및 업데이트는 물론이고 전반적인 개발 프로세스에 많은 도움을 주는 서비스이다. ..
컬렉션 프레임워크란? 다수의 데이터를 효율적으로 처리할수있는 방법을 제공하는 클래스의 집합 map, set, list 등 인터페이스를 사용하여 구현된 클래스의 집합 데이터 타입을 일반화하기 위해 제네릭 문법과 함께 사용한다. 제네릭이란? 데이터의 타입을 일반화, 강제하는 것이다. 저장되는 데이터들의 타입이 동일하지않아도 괜찮다. 하지만 99.9% 거의 모든 상황에서, 저장할 데이터들의 타입이 동일하다! 저장할 데이터들의 타입을 강제하는 것이 개발에는 더 도움된다. 제네릭을 사용하면 컴파일시 한 번 체크하기 때문에 타입이 강제되면서 안정성이 높아지고 형변환을 해야할 번거로움이 적어진다. 또한 재사용성을 높이고 중복 코드를 줄이는데 도움이 된다. 1. Map Key-Value 쌍으로 데이터를 저장하고 관리하..
배열리스트란 향상된 배열이다. 배열 1) 첫 생성에 전체 크기를 결정 2) 각각의 공간에 [index]로 접근 +) 빠른 접근 -) 데이터 삽입, 삭제 불리함 리스트 1) 첫 생성에 전체 크기를 결정하지 않음 2) 매번 새로 추가할수있음 +) 데이터 삽입, 삭제 유리 -) 인덱스같은게 없기 때문에 느린 접근 리스트의 장점을 배열로 가져갈 수 없을까? : 리스트의 장점을 배열에 접목 -> 배열리스트 +) 생성 시 전체 크기 결정하지 않는다. 그래서 데이터 추가가 용이하다. 배열류만 인덱스 개념 쓸 수 있다. (get()메서드 사용가능) 배열 배열 리스트 크기 정해짐 정해지지 않음 삽입, 삭제 불리 유리 인덱스 사용 -> 접근에 용이함