본문 바로가기

Blog/Spring

(28)
08.04 - 데이터베이스, DBMS 데이터베이스 데이터의 집합 특성 실시간 접근성(Real-time Accessability) 삽입/삭제/수정 작업 등을 통해 데이터를 지속적으로 갱신 가능 동시 공유성(Concurrent Sharling) 내용 참조(Content Reference) : 사용자가 요구하는 데이터 값에 따라 참조 가능 데이터베이스 관리 시스템(Database Management System = DBMS) 데이터베이스를 관리하는 소프트웨어 여러 응용 소프트웨어(프로그램) 또는 시스템이 동시에 데이터베이스에 접근해 사용할 수 있게 함 ex) Oracle, SQL Server, MySQL, DB2 등 필수 3기능 정의기능 : 데이터 베이스의 논리적, 물리적 구조 정의 조작기능 : 데이터를 검색, 삭제, 갱신, 삽입, 삭제하는 기능..
08.03 - 웹 개발의 이해 HTTP 프로토콜 World Wide Web이 인터넷의 전부가 아니다. 물리적으로 하나의 컴퓨터에는 여러 개의 서버가 동작할 수 있다. 각각의 서버들은 포트라는 값으로 구분되어서 동작한다. 웹은 주로 80번, 이메일 25, FTP 21 등 사용한다.(포트로 각각의 클라이언트가 다중 접속 가능) HTTP 서버는 기본 포트 값 80 인터넷 = 네트워크들의 결합체 인터넷은 보통 TCP/IP로 연결되어 있다. 서버와 클라이언트가 인터넷상에서 서로 통신하기 위해 프로토콜(protocol)이 만들어졌다. 통신 규약이므로 클라이언트와 서버가 이 통신 규약이 있어야만 제대로 통신할 수 있다. http는 어떤 종류의 데이터도 전송할 수 있도록 설계되었다. HTTP 작동방식 http는 서버/클라이언트 모델을 따른다. 무상..
08.03 - 웹 프로그래밍을 위한 언어 저급 언어 : 기계 중심의 언어; 기계가 직접 알아들을 수 있는 말로 코드를 작성하는 것이다. 기계어는 2진수로만 이루어진 프로그래밍 언어인데, 이것은 사용이 매우 어려워서 숫자로 된 문장과 1:1 대응하는 기호를 만들고, 그 기호로 프로그래밍을 하게 되었다. 이러한 과정에서 사용되는 도구가 컴파일러(Compiler), 이러한 기호로 작성된 언어는 어셈블리어(Assembly Language)라고 한다. 고급 언어 : 사람 중심의 언어, 그렇기 때문에 작성된 소스코드를 번역하기 위해 컴파일 과정이 필요하다. 이 일을 수행하는 것이 바로 컴파일러 PORTRAN : 최초의 고급언어 중 하나, 과학 계사용으로 주로 사용 COBOL : 오래됨, 일반 업무에서 사용할 목적으로 만들어짐, 은행 등에서 사용되고 있다...
스프링 프레임워크 입문 - PSA(Portable Service Abstraction) PSA(Portable Service Abstraction) 우리는 서블릿 애플리케이션을 만들고 있음에도 서블릿을 전혀 쓰지 않고 있다. 서블릿의 형태는 doGet() doPost() 메소드가 있고 web.xml에 맵핑을 하는 형태인데, 안 쓰고 있다는 뜻이다. 우리는 GetMapping 애노테이션을 붙여서 요청에 따라 메소드를 실행하는 형태임 이보다 아래 계층은 서블릿 기반으로 코드가 동작함 따라서 이러한 추상화 계층을 사용하면 우리는 좀 더 편하게 코딩을 할 수 있음 스프링 웹 MVC 스프링 웹 mvc가 제공하는 추상화 계층, PSA 중에 하나 @Controller 컨트롤러 역할을 수행하는 클래스가 된다. 겟, 포스트 매핑으로 요청을 맵핑한다.(요청에 따라 해당되는 서비스로 가줌) 스프링 웹 mvc를..
스프링 프레임워크 입문 - AOP 적용 예제 AOP 적용 예제 @LogExecutionTime 이라는 애노테이션이 있다고 가정하고 일단 성능측정(스탑와치) 하고 싶은 부분에 달기 그리고 그 애노테이션 생성 // 애노테이션 설정 @Target(ElementType.METHOD) // 이 애노테이션을 어디에 쓰겠다. @Retention(RetentionPolicy.RUNTIME) // 이 애노테이션 정보를 언제까지 유지할 것인가, 런타임까지 public @interface LogExecutionTime{ } 이제 이 애노테이션을 읽어 처리하는 aspect 만들기 LogAspect 클래스 @Component // 빈으로 등록이 되어야 하기 때문 @Aspect // aspect다 public class LogAspect{ Logger logger = Lo..
스프링 프레임워크 입문 - 프록시 패턴 프록시 패턴 기존 코드 건드리지 않고 새 기능 추가하기 Proxy 패키지 Payment 인터페이스 public interface Payment{ void pay(int amount); } Store 클래스 // 코드 안 바뀜, 그러나 스토어를 이용한 테스트 코드에서는 프록시가 붙여나옴 public class Store{ Payment payment; public Store(Payment payment){ this.payment = payment; } public void buySomething(){ payment.pay(100); } } Cash 클래스 // 코드 안 바뀜, 그러나 코드의 동작이 바뀌는 타겟임 public class Cash impleents Payment{ @Override public..
스프링 프레임워크 입문 - AOP(Aspect Oriented Programming) AOP (Aspect Oriented Programming) 흩어진 코드를 한 곳으로 모아 (중복되어서 흩어져 있는 코드들) 중복된 코드 class A{ method a(){ 중복 코드1 a 중복 코드2 } method b(){ 중복 코드1 b 중복 코드2 } method c(){ 중복 코드1 c 중복 코드2 } } 모으기 (중복 코드를 별도로 빼놓은 것) class A{ method a(){ a } method b(){ b } method c(){ c } method p(JoinPoint point){ 중복코드1 point.execute(); 중복코드2 } } - AOP 구현 방법 1. 컴파일 이용 A.java -> (AOP) -> A.class 자바 파일에는 특정 코드가 없지만 컴파일 한 코드에는 특..
스프링 프레임워크 입문 - 의존성 주입(Dependency Injection) 의존성 주입 (Dependency Injection) 필요한 의존성을 어떻게 받아올 것인가? 스프링에서 제공하는 다양한 의존성 주입 방법에 대해 알아본다. @AutoWired (생성자 대신) 강의에서는 생성자 대신에 오토 와이어드로 바꾸고 빌드했더니 css가 깨졌는데 메이븐 패키지를 해주면 해결됨 여기서 스프링 버전 4.3 이상부터는 생성자에 오토와이어드 애노테이션을 생략할 수 있다. 아니면 setter에 @AutoWired 붙이는 방법 이러면 스프링 ioc 컨테이너가 이 인스터스를 만들고 세터를 통해서 ioc 컨테이너에 들어있는 빈 중에 오너 리파지토리 타입을 찾아서 넣어준다. @AutoWired / @Inject를 어디에 붙이나? 생성자 필드 (위에 애노테이션) 세터 이 중에서 스프링 프레임워크 레퍼..