반응형

분류 전체보기 145

[Spring] AOP 구현 (XML)

AOP 구현 스프링 AOP를 구현하는 방법에는 두가지가 있습니다. XML 스키마 기반의 자바 POJO 클래스를 이용하여 구현 @Aspect 어노테이션 이용하여 구현 POJO(Plain Old Java Object) 순수한 자바 객체를 의미합니다. 즉, 특정 기술에 종속적이지 않은 자바 객체라는 의미입니다. XML과 어노테이션을 이용해 구현한다는 차이점이 있지만 두 방법 모두 큰 틀은 같습니다. 공통 기능을 제공하는 Aspect를 구현 Aspect를 어디에(PointCut) 적용할지 설정 즉, Advice를 설정 의존 설정 Maven org.aspectj aspectjweaver 1.9.2 Gradle compile group: 'org.aspectj', name: 'aspectjweaver', versi..

Spring 2020.07.06

[Spring] AOP의 개념

AOP Aspect Oriented Programming의 약자로, 관점(관심,기능) 지향 프로그램이란 뜻입니다. 공통 기능과 핵심 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법입니다. AOP의 기본 개념은 핵심 기능에 공통 기능을 삽입하는 것입니다. 즉, 핵심 기능의 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것이 AOP라고 할 수 있습니다. 핵심 기능에 공통 기능을 삽입하기 위한 방법으로는 크게 세 가지가 있습니다. 컴파일 시점에 코드에 공통 기능 추가 클래스 로딩 시점의 바이트 코드에 공통 기능 추가 런타임에 프록시 객체를 생성해서 공통 기능 추가 스프링이 제공하는 AOP방식은 프록시를 이용하는 세 번째 방식입니다.(두 번째 방식을 일부 지원하지만 주로 사용되지는 않습니다.) 스..

Spring 2020.07.06

[Spring] @Autowired @Resource @Inject @Qualifier

@Autowired, @Resource, @Inject의 역할 세 어노테이션의 공통점은 자동 의존 주입(DI)입니다. @Autowired, @Resource, @Inject의 차이점 @Autowired @Resource @Inject 지원 Spring Framework에서 지원 Java에서 지원 Java에서 지원 연결 순서 1. 타입으로 연결 1. 이름으로 연결 1. 타입으로 연결 2. 이름으로 연결 2. 타입으로 연결 2. 이름으로 연결 위치 필드,생성자,setter메서드O 생성자X, 필드,setter메서드O 필드,생성자,setter메서드,일반메서드O @Autowired 타입으로 자동 의존 주입을 합니다. Spring Framework에 종속적입니다. @Qualifier어노테이션을 사용하여 강제연결을 ..

Spring 2020.07.05

[MySQL] ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)

오류발생 어제까지 잘만되던 MySQL이 갑자기 접속오류가 발생했습니다. root 계정으로 로그인을 시도하니 ERROR 2003: Can't connect to MySQL server on 'localhost' (10061) 오류가 발생합니다. 보통 계정 비밀번호가 틀린경우 이 에러가 발생하는데 이번 경우는 비밀번호가 틀린 경우가 아니었습니다. 해결방법은 WindowOS 기준으로 작성되었습니다. 해결방법 실행 - services.msc - MySQL 항목을 재시작 : 재시작을 하려고 하니까 MySQL이 없습니다. 분명 저번주에 목록에 있던걸 확인한 터라 이상했지만 일단은 MySQL을 추가합니다. 명령 프롬프트 관리자 권한으로 실행 > ${MYSQL_HOME}/bin으로 이동 > mys..

Database/MySQL 2020.07.03

[Java]Immutable Object(불변객체)

Mutable Object? Immutable Object? Immutable Object(불변객체)는 객체 생성 후 그 상태를 바꿀 수 없는 개체입니다. 다르게 말하면 할당 된 데이터를 바꿀 수 없는 객체입니다. 예를 들어 String[] arr = {"a", "b", "c"}; arr[1] = "z";라고 코드를 작성하면 b가 z로 바뀌는 것을 알 수 있습니다. 이는 할당 된 데이터를 바꾼 것이 되므로 Mutable Object(가변객체)입니다. 불변객체의 가장 대표적인 예로는 String, Integer, Boolean 등이 있습니다.(주의 할 점은 int, boolean등 원시타입이 아니라는 것입니다. 원시타입은 객체가 아닙니다.) String을 예로 들어 보겠습니다. String str = "a..

Java 2020.07.03

[Java] String = ""; vs new String("");

보통 자바를 처음 배울 때 String hello = "Hello, World"; 이렇게 작성 한 후 이걸 출력하는 예제를 따라칠 것 입니다. 그래서 자바를 처음 배우시는 분들은 new String()에 대해 생소하실 수 도 있습니다. 오늘은 두 방법의 차이점을 알아보겠습니다. public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; String str3 = new String("Hello"); String str4 = new String("Hello"); String str5 = new String("Hello").intern(); System.out.println(str1 == str2); // "Hel..

Java 2020.07.01

[Java] 배열을 ArrayList로 변환

배열을 ArrayList로 변환 하는 방법을 알아보고 그 반대의 경우도 알아보겠습니다. 배열 => ArrayList ```java public static void main(String[] args) { String[] arr = {"The", "URL", "of", "my", "blog", "is", "https://dhlee.dev"}; List list1 = java.util.Arrays.asList(arr); System.out.println(list1); List list2 = new ArrayList(Arrays.asList(arr)); System.out.println(list2); List list3 = new ArrayList(); Collections.addAll(list3, arr);..

Java 2020.06.30

[Java] LocalDateTime

JDK 8 이전에는 java.util.Date, java.util.Calendar클래스를 대체하기 위해서 Joda-Time 같은 오픈소스 라이브러리를 사용했었다고 합니다. 간단하게 위 두 클래스의 문제점을 알아보고 JDK 8부터 바뀐 Java의 날짜와 시간 API를 알아보겠습니다. 기존 날짜 API의 문제점(Naver D2블로그에서 참고하였습니다. ) 불면 객체가 아님(Not Immutable) : set으로 값 변경이 가능 int상수의 남용 : calendar.add(Calendar.SECOND, 2); 헷갈리는 월 지정 : 1월을 0으로 표현, 12월은 11 => 개발자들의 실수 유발 일관성 없는 요일 상수 : Calendar 클래스(일요일이 1)와 Date클래스(일요일이 0)간의 요일 지정값에 일관..

Java 2020.06.28