DZone이라는 사이트에서 번역해서 가져온 글입니다. 간단히 읽어보시고 원문을 읽어보고싶으시면 아래 url로 들어가셔서 바로 보시면 될것 같습니다. 참고문 정도로 보시면 좋겠습니다. 원문 : dzone.com/articles/what-is-spring-aop-1 AOP에 대해서는 자주 논의되지는 않지만 스프링에서 굉장히 많은 부분에 걸쳐서 사용되고 있습니다. 이번 포스팅을 통해서 AOP에 대해서 익숙해지고 현업에서도 활용할 수 있을 것입니다. 여러분은 AOP에 대해서 알고 계신가요?? 혹시 들어보셨다면 현재 진행하고있는 프로젝트에 쓰고 계신가요?? 만약 아니라면 집중해주세요! 요즘 스프링부트나 최첨단 프레임워크를 활용해서 진행하는 프로젝트들이 굉장히 많습니다. 한편으로는 매우 잘된일같지만 다른 한편으로는..
안녕하세요. SQL Injection에 대해서 공부해본 내용을 공유하고자 합니다. 대부분 웹 해킹에 대해서는 보안의 중요성이나 방지방법만 파악하고 여러가지 유형에 대해서는 간과한 것 같아서 그 부분도 함께 스터디를 해봤습니다. 깊진 않지만 어디가서 말 못할 정도의 내용은 아닐 수 있도록 정리해보겠습니다. SQL 인젝션이란??SQL 인젝션은 백엔드 데이터베이스 단에 저장된 중요한 정보들에 접근하기위해 SQL 쿼리문을 조작하는 공격중 하나이다. 이 중요한 정보들에는 회사의 민감한 정보, 개인 고객 정보 등이 있을 수 있다. 이 공격의 영향으로 회사에는 막대한 피해를 입을수 있습니다. SQL 인젝션 공격에 성공한다면 접근할 수 없는 고객 목록을 확인하거나 데이터베이스 스키마를 삭제하거나 내용을 수정하거나 웹에..
안녕하세요. 이번 주제는 Boxing과 Unboxing 에 대해서 입니다. Java에서의 primitive 데이터 타입은 정수타입(byte, short, int, long) 소수타입(float, double) bool 타입(boolean) 문자타입(char) 이렇게 4가지가 존재하게 되는데요. 그와 마찬가지로 Wrapper 타입이라고 각 primitive 별 참조타입이 따로 존재하게 됩니다. Wrapper 타입 정수타입(Byte, Short, Integer, Long) 소수타입(Float, Double) bool 타입(Boolean) 문자타입(Character) Boxing / Unboxing 의미와 사용이유 위의 primitive 타입과 wrapper 타입을 서로 왔다갔다 할때(Casting), Box..
안녕하세요. 오늘은 MVC 패턴에 대한 이야기를 하고자 합니다. 신입 기술면접에서 자주 등장하는 내용인데요. 패턴은 정해져있지만 각자가 이해하는 내용이 달라서 다양한 답이 나오는 주제인것 같아요. 그래서 오늘은 MVC 패턴은 어떤 히스토리를 가지고 탄생하게 되었는지와 M.V.C. 를 이루는 각 개념에 대해서 이야기해보려 합니다. 히스토리 모델 1 JSP를 활용하여 출력 로직과 비즈니스적인 처리 로직이 함께 혼용되어 개발되는 개발 방법. 코딩은 매우 직관적으로 한 페이지에서 일어나는 내용이 하나의 소스코드 페이지에 모두 담겨져 있다. 따라서 코딩은 매우 쉽지만 여러 중복코드가 반복되어 유지보수가 매우 어렵다. 또한 HTML 태그와 안의 자바 코드의 혼용으로 인해 일명 스파게티 코드로 불리우는 읽기 매우 껄..
이번 주제는 DTO와 VO에 관한 이야기이다. 흔히 다들 DTO와 VO를 같은 의미로 사용하고있고 같은 역할로 사용하고 있다고 판단한다. 사실 그럴것이 지금 개발상태에서는 두가지 사용법이 혼용되고 있기때문이다. 하지만 명백히 DTO와 VO는 그 히스토리가 다르며 구성요소와 사용법도 다르다. 오늘은 그것에 대해서 정리해보고자 한다. VO( value object )일단 VO의 경우는 예전으로 거슬러 올라가면 EJB라는 프레임워크를 사용할 때 값을 가지는 객체에서 유래한다. 안에 있는 내용물은 값 자체를 의미하고 내부 메소드를 통해 비즈니스를 가지거나 한다. 내용물이 값 자체를 의미하기 때문에 read only 특징을 가지고 있다. 또한 값 자체를 의미하기 때문에 같은 객체라는 것을 보장하기 위해서는 equ..
안녕하세요. 오늘은 Process와 Thread에 대한 이야기를 해보고자 합니다. 기술면접에서 가장 자주 등장하는 주제중 하나인데요. 대답하기 조금 어렵게 느껴지고 아무래도 멀티스레드 환경에서 프로그램을 짜는 경험이 상대적으로 많지가 않기 때문에 신입 혹은 첫 경력이직을 도전해보시는 분들께서는 선뜻 정확한 답을 내기가 어려운 주제인것 같습니다. 일단 단어들의 간단한 정의부터 보겠습니다. 용어정리 Program : 짜여진 코드들. 어떤 작업이 있고 해당 작업을 나타내는 실행 가능한 파일. 운영체제 위해서 동작할 수 있는 파일. Process : 짜여진 Program 코드를 실행한 상태. 즉, Program을 실행하면 컴퓨터는 Process라는 실행흐름을 할당하여 작업을 처리한다. Thread : 짜여진 P..
equals 메소드 우리는 흔히 equals 는 값비교, == 는 주소값 비교라고 한다. 왜 equals는 값비교일까? 기본적으로 자바의 모든 클래스들은 Object 클래스를 상속하게 된다. 즉, 모든 클래스는 Object 클래스의 equals를 가지게 된다. Object 클래스의 equals 메소드는 오로지 자기 자신만이 true를 낼 수 있는 결과를 만들것이다. String 클래스로 예를 들어보자. public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.le..
모든 자바 개발자들은 JRE(Java Runtime Environment)에 의해 자바 바이트코드가 실행된다고 알고있습니다. 하지만 많은 개발자은 JRE가 JVM(Java Virtual Machine)의 구현이라는 것은 알지 못하는 것 같습니다. JVM은 컴파일된 자바 바이트 코드를 interpret하고 분석하고 실행합니다. 개발자로서 JVM의 아키텍쳐를 아는 것은 매우 중요합니다. 개발자가 코드를 더욱 효율적으로 작성할 확률을 올려줄 것입니다. 해당 포스팅에서는 자바에서의 JVM 아키텍쳐에 대한 깊은 이해와 다른 컴포넌트들을 알아볼 것입니다. JVM 이란..? 가상머신이란 물리적 머신을 구현한 소프트웨어입니다. 자바는 애초에 WORA(Write Once Run Anywhere, 한번 쓰고 언제어디서나 ..