본문 바로가기

Programming

나의 프레임워크 설계 ref 스프링 - 1 - - 지난번에 MVC 구조를 기초로 개발을 시작했다. 이번엔 기본 MVC 구조에 의존성을 주입 해보겠다. 1. 의존성 주입을 하자!! 학부때 소프트웨어 공학수업때 교수님이 한가지만 알고 가면 된다고 하셨다. 그것은 "의존성을 줄이고 응집도를 높여라!" 이거였다. 그때는 무슨말인지 몰랐는데, 개발을 하면서 서로 영향을 주지않는 설계가 중요하다는 것을 알게 되었다. 그래서 스프링의 DI를 이용하여 의존성 주입을 하였다. 하지만 이렇게 일일이 컨트롤러에 주입을 하면 BusinessLogic이 많아 지면 많아질수록 선언되는 Biz가 많아질 것이다. 조금더 코드를 줄이기위해 하나의 클래스에 모든 Biz의 의존성을 주고 getListBiz 를 만들어 가지고올 수 있게 바꾸었다. IocContainer 라고 클래스이름.. 더보기
나의 프레임워크 설계 ref 스프링 - 0 - 항상 내가 자주 사용할 구조를 미리 만들어놔야지 생각만하고 안하게되었다.이번 기회에 틈틈히 조금 씩 설계를 해두고 만들어 봐야겠다. 개발하다보면 회사에서 사용하는 구조랑 비슷해 질 수도 있지만 최대한 내생각을 담아 만들어 보고싶다. 목적- 누구라도 쉽게 알아볼 수 있는 구조 만들기- 누구라도 쉽게 개발할 수 있는 구조 만들기- 최대한 의존성이 없는 구조 만들기- 확장성이 좋게 구조 만들기 목적은 다음과 같고 우선은 Back-end 구조를 만들것이다. - 시작 구조는 MVC구조로 다음과 같다.- 여기까지는 그냥 기본구조이다.- Controller가 요청을 받으면 DTO에 태워서 BusinessLogic에서 DAO를 호출하여 처리하고 응답하는 구조이다. 이제 다음 포스팅 부터 Spring을 입히도록 해보겠다. 더보기
bean scope 명시 bean scope를 명시하여 서로다른 객체로 생성이 가능한데 다음과 같다. scope="singleon" : 기본값이며 스프링 컨테이너당 하나의 빈 객체 생성 scope="prototype" : 빈은 사용할때마다 새로운 객체 생성 scope="request" : http 요청마다 새로운 객체 생성(WebApplicationContext에서 사용) scope="session" : 세션마다 새로운 객체 생성(WebApplicationContext에서 사용) --> bean의 scope 속성값에 설정 하여 사용 참고 : http://egloos.zum.com/jwlee1728/v/1805102 더보기
Spring AOP 처음에 AOP라는 기능을 보았을 때 놀랐다. 개발하는 방향에 있어서 좋은 기능이라는 것 ! 나름 쉽게 적어 놓았는데 어떨지 모르겠다. AOP 란 - 비즈니스 로직에 영향을 주지 않고 사이사이에 공통 모듈을 효과적으로 잘 끼워 넣도록 하는 개발방법이다. - 관점을 옆으로(?) 주고 공통 모듈을 끼워 넣도록 하는 개발 방법이다. AOP 주요 구성요소 1. JoinPoint - 모듈이 삽입되어 실행될 수 있는 특정 위치 - 제어 흐름중의 한 시점 2. PointCut - 어떤 클래스의 어느 조인포인트를 사용할 지 선택하는 기능 3. Advice - JointPoint에 삽입되어 동작할 수 있는 코드 - 동작시점 before : Matching 된 JoinPoint 이전에 동작하는 Advice after ret.. 더보기
HTTP 에러정리 개발 하다 보면 에러코드를 외워야 한다는 생각을 많이 하게 된다. 조금씩이라도 알고 있어야겠다는 생각에 퍼오게 되었다.!!code : 200reason field : OK 의미 : 클라이언트의 request가 성공적으로 수행됐다. request처리결과로 클라이언트에게 전달되는 정보는 사용된 method에 따라서 달라진다.reason field : GET의미 : request가 지정한 자원이 response메세지로 전달 된다. reason field : HEAD의미 : response메세지에는 요청된 자원에 관한 정보를 나타내는 header만이 포함된다. reason field : POST의미 : 지정된 동작의 수행결과를 포함하거나 결과를 설명하는 엔터티가 전달된다. code : 201reason fiel.. 더보기
Spring DI & IOC 처음에 스프링을 접했을때는 너무 생소한 단어였던 기억이난다. 사실 지금 회사에서는 닷넷 & Nancy프레임웍을 사용하고 있는데 어디서나 Ioc 컨테이너는 중요한 것 같다. 1. IoC란? 간단하게 제어의 주도권을 스프링에게 넘겨주는 것을 말한다. 일반적으로 클래스는 자신이 사용할 객체를 생성하여 사용한다. 즉 사용할 프로그램이 주도권을 가지고 있다. 하지만, Ioc는 제어흐름을 뒤집는다. 클래스는 자신인 사용할 객체를 직접 생성하지 않고, 제어권한을 가진 특별한 오브젝트에 의해 결정되고 만들어진다 2. IoC 구현 방법 DL(Dependency Lookup) 의존성 검색 저장소에 저장되어 있는 Bean에 접근하기 위하여 사용하고자 하는 Bean을 검색하는것 DI(Dependency Injection) 의.. 더보기
C# Anonymous Type Anonymous Type(익명 타입) 개요 선언과 동시에 객체를 할당한다. 간단히 사용할 객체를 만들때 유용하다. public void AnonymousTypeSimple() { var sample = new {name = "이상운", age = 28 }; } AnonymousType을 사용 public class AnonymousData { public String name { get; set; } public int age { get; set; } } public class AnonymousType { //AnoymousType의 데이터 저장 하여 사용 public void AnonymousSample() { var arraySample = new { age = new int[] { 31, 12, .. 더보기
C# Lamda Lambda Expression(람다식) 개요 람다식은 무명 메서드를 단순한 계산식으로 표현한 것 LINQ 쿼리 식을 작성하는데 유횽하다. => 연산자는 할당(=)과 우선 순위가 같고 오른쪽 "결합성"이 있다. "결합성"이란? 우선 순위가 동일한 연산자 두 개 이상이 식 하나에 있으면 두 연산자의 결합성에 따라 연산 순서가 결정된다. 왼쪽 결합성이 있는 연산자는 왼쪽에서 오른쪽으로 계산됩니다. 예를 들어, x * y / z는 (x * y) / z로 계산된다. 오른쪽 결합성이 있는 연산자는 오른쪽에서 왼쪽으로 계산된다. 사용법 람다 연산자 => 왼쪽에 매개 변수를 지정, 오른 쪽에 식을 삽입 public class Lamda { public delegate int LamdaDelegate(int opera.. 더보기
C# Yield Yield 키워드 개요 yield를 알기위해서는 Enumerable을 알아야 할 필요가 있다. 1. IEnumerable array는 정적이다. 하지만 IEnumerable은 동적인 공간을 가지고 있어, 동적인 데이터를 저장하기에 좋다. LINQ를 사용하기에 좋다. 2. IEnumerable vs List 두가지다 동적인 공간을 제공한다. 차이는 무엇이 있을까 차이점 List는 IEnumeralble을 상속받는다 때문에 아래와 같이 캐스팅해야한다. IEnumerable iEnumerable = new List(); -- O 가능 List list = new IEnumerable(); -- X 불가능 -> (수정) List list = new IEnumerable().toList //.toList를 사용해.. 더보기
C# Partial Type Partial Type 정의 클래스나 구조체, 인터페이스 또는 메서드의 정의를 둘 이상의 소스 파일로 분할할 수 있다. 각 소스 파일에는 형식이나 메서드 정의가 들어있고 이 모든 부분은 응용 프로그램을 컴파일할 때 “결합”된다. 장점 클래스를 개별 파일로 분할하면 여러 프로그래머가 동시에 작업을 수행할 수 있다. 기본형식 두 개의 클래스는 컴파일 할 때 결합되어 실행 된다. public partial class PartialType { public void PartialTest1() { } } public partial class PartialType { public void PartialTest2() { } } 밑의 선언은 “public class PartialType : FirstClass, Firs.. 더보기