전체 글 150

[Spring] 컨테이너와 IOC, DI란?

스프링을 공부하면 처음 접하는 용어들이 있다. 컨테이너, IOC,DI 등 용어에대해 간단하게 다뤄보겠다. IoC (Inversion of Control)란? Ioc는 제어의 역전이라는 뜻이다. 프로그램의 흐름을 개발자가 제어하지않고, 프로그램이나 프레임워크가 직접제어한다는말이다. 컴포넌트의 의존관계결정, 객체의 생명주기 같은 일을 대신 수행해준다. 흔히 스프링의 프레임워크를 사용해 개발할때 여러가지 Bean을 사용할것이다. 사용자의 요청이 들어오면, 요청에 알맞는 Bean을 생성해서 필요한일을 하도록 시킨다. 해당 Bean이 할일을 마치면 Bean을 삭제해준다. 하지만 이런 객체의 생성과 소멸이 어떻게 이루어 지는지 알 필요가없다. 스프링 컨테이너가 관리해주기때문에 개발자는 비즈니스로직 짜는거에 집중할수..

[Java] String , StringBuffer , StringBulider 차이점

String - 불변의 속성을 가진다. * 문자열에 추가,수정,삭제 등의 연산이 빈번하게 발생할땐 사용하지말자 1 2 3 4 String abc = "abc"; abc += "def"; System.out.println(abc); cs (위와 같이 코드를 찍으면 값자체는 abcdef 가 나오겠지만 메모리적으로 본다면 제일처음에 abc라는 x100이라는 변수는 주소값을 가지고 있고, abc에 값을 추가해도 String 의 불변이라는 속성때문에 abcdef라는 x200번지의 주소를 새로 만들어서 값을 넣어서 사용자에게 출력하는것이다. 남아있던 x100은 나중에 GC(가비지컬렉터) 가 처리한다.) StringBuffer - String과 차이점은 .append(), delete() 등의 메서드를 사용해 동일 ..

JAVA/정리 2021.08.25

[Java] 자바란 무엇인가?

자바의 탄생과 역사 - 자바는 1991년 썬 마이크로 시스템즈 사에서 제임스 고슬링 이 고안한 프로그래밍언어이다. 자바의 특징 - 자바는 객체지향 프로그래밍(OOP, Object Oriented Programming) 언어이다. - 자바의 정석 책에서는 자바 언어자체가 현실세계를 모방하고 만든언어라고한다. 객체지향 프로그래밍(OOP) 이게뭔데? - 객체지향 프로그래밍이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결하여 전체 프로그램을 완성하는것 ( 대표적인 예로 자동차를 들수 있다. 자동차에는 창문,바퀴,엔진,등등 다 객체이다 이 부품(객체)들을 각자 만들어서 합치면 자동차가 되고 그것이 굴러가는것이다.) OOP도 이런원리랑 똑같이, 클래스(설계도)를..

JAVA/끄적끄적 2021.08.25

[Git] gitflow란 ? git-flow 를 사용한 브랜치 전략

GitFlow? 깃플로우(git-flow) 전략은 소프트웨어의 소스코드를 관리하고 출시하기 위한 ‘브랜치 관리 전략(branch management strategy)’중 하나이다. git-flow 전략외에도 github flow 와 gitlab flow 전략등도 있다. 각자에게 맞는 전략을 선택해서 사용하는게 가장 중요하다. git-flow 는 Vicent Driessen 이 제안한 git 의 workflow 디자인에 기반한 브랜칭 모델이다. git-flow 에서 사용하는 브랜치의 종류는 5가지이며, 크게 항상 유지되는 메인브렌치(master, develop)와 일정 기간 유지되는 보조 브랜치(feature, realease, hotfix)로 나뉜다. Master - 제품으로 출시 되는 브랜치 Devel..

Git 2021.08.14

스프링이 사랑한 디자인 패턴

* 어댑터 패턴 - 개방 폐쇄 원칙을 활용한 설계 패턴 합성,즉 객체를 속성으로 만들어서 참조하는 패턴 ( 호출 당하는 쪽의 메서드를 호출당하느쪽의 코드에 대응하도록, 중간에 변환기를 통해 호출하는패턴) * 프록시 패턴 - 실제 서비스 메서드의 반환값에 가감하는것을 목적으로 하지않고, 제어의 흐름을 변경하거나, 다른 로직을 수행하기 위해 사용한다. (제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴) * 데코레이터 패턴 - 원본에 장식을 더하는 패턴( 클라이언트가 받는 반환값에 장식을 덧입힌다.) (메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴) * 싱글톤 패턴 - 인스턴스 하나만 만들어 사용하기 위한 패턴 (오직 인스턴스를 하나만 만들고, 그것을 계속해서 재사용한다) ..

객체 지향 설계 5원칙 - SOLID

SOLID ( oop 객체 지향도구를 올바르게 사용하는 방법) - SRP( Single Responsibility) : 단일 책임 원칙 - OCP( Open Closed ) : 개방 폐쇄 원칙 - LSP ( Liskov Substitutability ) : 리스코프 치환원칙 - ISP ( Interface Segregation) : 인터페이스 분리원칙 - DIP ( Dependency Inuersion) : 의존 역전 원칙 좋은 소프트웨어 설계는 결합도는 낮추고, 응집도는 높인다.결합도가 낮으면 모듈간 상호의존성이 줄어 객체의 재사용이나, 수정, 유지보수 용이응집도가 높으면 하나의책임에 집중하고 독립성이 높아져, 재사용이나, 수정, 유지보수 용이 * SRP (어떤 클래스를 변경해야 하는 이유는 오직 하나..

자바가 확장한 객체지향

abstract 키워드 - 구현부가 없는 메서드 (객체 생성불가) - 추상메서드를 하나라도 갖고 있으면, 클래스를 반드시 추상클래스로 선언 - 추상메서드는 하위클래스에게 메서드 구현을 강제한다 // 오버라이딩 강제 생성자 - 개발자가 아무런 생성자를 만들지않으면 ,컴파일러가 자동구현 단, 생성자가 하나라도 있으면 컴파일러는 기본생성자를 만들어주지않음 final 키워드 - 클래스 (상속불가) - 메서드 (오버라이딩금지) - 변수 (한번할당하면, 변하지않는 상수값) instanceof - 만들어진 객체가 특정클래스의 인스턴스인지 확인하는연산자 - 객체 참조변수 instanceof 클래스명 - instanceof 연산자가 강력하기는 하지만 LSP(리스코프 치환원칙을 어기는 코트에서 주로나타는연산자이다 inte..

자바와 객체지향(OOP)

객체는 유일무이하게 존재하는 실체이기때문에 속성에 값을 갖고, 클래스는 개념이면서 분류체계일뿐 속성에 값을 가질수없다. 눈으로 보고,느끼고,생활하는 현실세계처럼 프로그래밍 할수없을까? 라는 고민속에서 객체지향 개념이 탄생됨. 눈을 보여지는것, 만져지는것, 상상되는 모든것은 사물(object)이다. (사물을 하나하나 이해하기보다는 사물을 분류(class)해서 이해하는것이 인간의 인지법이다.) 객체지향의 4대 특성 - 캡상추다 캡슐화 - 정보은닉 상속 - 재사용 추상화 - 모델링 다형성 - 사용편의 캡슐화 // 은닉화 - 관련이 있는, 변수와 함수를 하나의 클래스로 묶고, 외부에서 쉽게 접근하지 못하게 하는게 핵심 객체에 직접적인 접근을 막고 외부에서 내부의 정보에 직접접근하거나 변경할 수 없고, 객체가 제..

[Spring] Filter, Interceptor, AOP 차이 및 정리

공통 프로세스에 대한 고민 자바 웹 개발을 하다보면, 공통적으로 처리해야할 업무들이 많다. 예를 들면 로그인 관련(세션체크) 처리, 권한 체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등등 이있다. 공통업무에 관련된 코드를 모든 페이지마다 작성해야 한다면 중복된 코드가 많아지고, 프로젝트 단위가 커질수록 서버에 부하를 줄수도 있으며, 소스관리도 되지않는다 즉 공통 부분은 빼서 따로 관리하는게 좋다. 위와 같은 공통 처리를 위해 활용할수 있는것이 3가지가 있다. 1) Filter 2) Interceptor 3) AOP 스프링에서 사용되는 Filter, Interceptor, AOP 세가지 기능은 모두 무슨 행동을 하기전에 먼저 실행하거나, 실행..

Spring Framework 2021.06.24

[Spring] 스프링 인터셉터(Interceptor)란 ?

목표 Interceptor 란 무엇인지 알아본다. Interceptor 를 직접 구현해본다. 순서 1. 인터셉터(Interceptor) 1.1 인터셉터란? 1.2 왜 사용하는가? 1.3 구현수단 1.4 어떤 메서드를 가지고 있는가? 2. 인터셉터 동작 위치 및 순서 3. 구현 방법 및 실습 4. 다중 인터셉터 5.HandlerInterceptor 메서드 출력 순서 1.1 인터셉터란? 컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할수 있는 일종의 필터 interceptr 란 단어는 '낚아채다'라는 의미이다. 해당 단어의 의미와 같이 사용자 요청에 의해 서버에 들어온 Request 객체를 컨트롤러의 핸들러(사용자가 요청한 url에 따라 실행되어..

Spring Framework 2021.06.24