본문 바로가기

개발자노트

(260)
AOP 용어 정리 [관점지향 프로그래밍] Aspect Oriented Programing AOP에서는 핵심로직에서 직접 공통관심을 호출하지 않고 위빙(Weaving)이라 불리는 작업을 해서 공통관심 기능 코드를 주입함 이러한 위빙작업을 하기 위해서는 어디에(Pointcut), 언제(Advice) 주입을 해야할지 알아야한다. 1) Pointcut (포인트컷 , 어디에 ) 어디에 공통관심 기능코드를 주입할 것인지 정의한다. 횡단관심을 적용할 핵심로직을 의미한다. 하나의 @Aspect 안에 여러개의 포인트 컷을 선언할 수도 있다. 2) aspect (결합) 흩어진 관심사를 모듈화한 것 (여러 핵심 기능에 적용될 관심사 모듈) 비즈니스 메서드가 시작/ 끝나면 그때 등록해둔 advice가 실행 → 스프링 컨테이너가 담당 및 관리 ..
의존성 주입 ( DI = Dependency Injection ) 의존성 주입(dependency injection)은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다. 즉, 외부에서 두 객체 간의 관계를 지정해주는 디자인 패턴으로, 인터페이스를 사이에 두어 클래스 레벨에서는 의존관계가 고정되지 않도록 하고, 서버 런타임 시 관계를 동적으로 주입하여 결합도를 떨어트릴 수 있게 해준다. 의존성 주입에는 크게 두가지 방법이 있다. 1) 생성자 인젝션 2) 수정자(Setter) 인젝션 1) 생성자 인젝션 Iphone의 기본생성자 외에 Watch와 battery를 인자로 필요로 하는 생성자를 만든다. 그리고 .xml 파일 ( 스프링 컨테이너 ) 에는 Galaxy 객체를 phone에 담고, 이 때 이 멤버변수는 ref = "주입할 객체명" value= "문자열 혹은 기본..
Spring AOP ( 관점지향 프로그래밍 ) [관점지향 프로그래밍] Aspect Oriented Programing 횡단관심(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 코드 자체를 수정하지 않고, 기존의 코드에 추가동작을 추가함으로써 수행한다. 이를 통해 기능을 수행하는 코드의 핵심부를 복잡하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있도록 한다. 즉 , 기능을 비즈니스로직과 공통 모듈로 분리한 후, 필요 시점에 비즈니스 로직에 삽입하여 실행하도록 한다. 핵심관점(비즈니스로직) + 횡단관점(트랜잭션 , 로그, 권한체크, 인증 ,예외처리 등)으로 관심의 분리를 이룬다. 쉽게말해 DI가 의존성(객체를 new)의 주입이라면 , AOP는 기능(lo..
Spring 개념 IOT ( 제어의 역행 ) [제어의 역행] Inversion of Control 객체 생성문을 직접 작성해서 해당 객체를 사용할 수 있게 하는게 아니라 객체가 필요한 곳에 객체를 주입(Injection)함으로써 해당 객체를 사용할 수 있도록 해주는 것이다. ❓누가 주입해주나? = 스프링 컨테이너 ✅ 효과 : ➡ 객체의 생성과 객체 간 의존관계에 대한 코드가 클래스코드소스 상에서 사라지게 된다 ➡ 즉, 객체를 변경해줘야할 때 해당 객체를 사용 중인 모든 클래스에서 소스를 수정하지 않아도 된다 == 유지보수 용이 , 의존관계를 명시 ❓ 그렇다면 스프링 컨테이너란?? 스프링 애플레이션 내의 여러 클래스에서 각각의 객체들을 생성하고 의존관계를 설정하는 작업을 대신 수행해주는 곳이 스프링 컨테이너 ❗ 동작순서 애플리케이션이 실행되면, 스프..
이클립스에서 Spring 프레임워크 [플러그인] 사용하기 ❗ 주의할점 - JDK가 여러가지가 깔려있으면 오류가 뜰 가능성이 높음 - 환경변수 설정을 했는지 확인 - eclipse 설치경로에 eclipse.ini 파일의 내용 중 -vm에 경로가 설치 된 jdk 경로인지 확인 경로를 바꾸지 않았다면 상위경로와 비슷할 것임 step1. 이클립스 실행 후 상단에 help → Eclipse Marketplace... 클릭 step2. sts를 검색 후 엔터 그 후 Spring Tools 3가 두개가 뜰 것인데, Standalone 와 Add-On 두가지가 있음 원래는 Standalone 설치 완료 후 Add-On을 설치하는 것이지만 나같은 경우에는 오류가 발생하여 Add-On 버전만 설치하였더니 정상작동하였음 ❗ 설치 진행을 할 때 우측 하단에 % 게이지 잘 확인하고 ..
[10분 테코톡] 🐶 코기의 Servlet vs Spring ( Spring으로 Servlet을 다룬다는 것 ) 1. 서블릿이란? 처음 웹 서버는 클라이언트의 요청에 따라 정적인 페이지로만 응답할 수 있었음 그래서 웹 서버에 프로그램을 붙여서 동적인 페이지를 생성하기 시작함 ✔ 서블릿도 동적인 페이지를 만들기 위해 웹 서버에 붙이는 프로그램 중 하나인 것! 그렇다면 서블릿을 사용하면 어떠한 실질적인 이득이 있는가? ✔ 복잡한 http 요청을 개발자들이 직접 처리,분석해서 모든 규약과 제약에 맞춰 텍스트 형식의 응답을 보내야 한다면 굉장히 어렵고 복잡함 ✔ 이 때, 서블릿이 요구하는 구현 규칙을 지켜주면서 서블릿을 정의해주면 http 요청 정보를 쉽게 사용할 수 있고, 처리결과를 쉽게 응답으로 변환할 수 있음 ✔ 서블릿을 이용하여 웹 요청을 다루게 되면 개발자들이 진짜 집중해야하는 비즈니스 로직 (처리 로직) 에 집..
Github - git SourceTree 사용법 ( branch 생성과 병합 ) , git clone 방법 추가 Step 1. 브랜치 생성하기 브랜치를 생성하는 방법은 크게 두가지 방법이 있는데 1. GitHub에서 생성하고, 다른 GitGUI 에서 연동하는 방법 2. GitGUI에서 생성하고, 원격에 업로드 하는 방법 나는 1번 방법을 설명하겠다. ✔ GitHub에서 브랜치 생성 레포지터리를 생성하면 default로 main 브랜치가 생성되어있다. Find or create a branch.. 에 생성하고 싶은 브랜치 명을 기입하게 되면 다음과 같이 main을 기반(부모)로 한 새로운 브랜치를 생성할 수 있다. 생성된 Branch를 체크하여 이동할 수 있다. 👉 통용되는 브랜치 이름! - Master Branch 제품으로 출시 될 수 있는 브랜치 ( 배포 ) 배포 가능한 상태만을 관리, 커밋할 때에는 태그를 사용..
Git / GitHub 기본사용법 1. GitHub 사용을 위한 기본설정 1) GitHub 회원가입 https://github.com/ 회원가입 방법은 생략하겠다. GitHub: Where the world builds software GitHub is where over 83 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat... github.com 2) GitHub Repositories 선택 로그인 후 자신의 프로필사진 부분을 클릭하고 Your repository를 클릭 3)..