전체 글
-
의존성 관리와 자동설정 (스프링 부트 원리 - 1)Programming/Spring Boot 2020. 3. 6. 01:08
1. 의존성 관리 이해 Dependency 추가할 때 버전 명시 없이 추가 가능 (상위 계층의 pom에서 처리) 만약, 버전을 명시한다면 해당 버전을 가져옴 (Override) 폼에서 지원하지 않는 Dependency를 추가할 때는 버전을 명시해야 함 parent로 받는 거랑 dependencyManagement로 받는 거랑 다름! parent로 받는 것이 더 많은 기능을 세팅해줌 (이를 추천) 2. 의존성 관리 응용 - 버전 관리 해주는 의존성 추가 - 버전 관리 안해주는 의존성 추가 mvnrepository에서 라이브러리 검색하여 복붙 만약 IDE에 아이콘 표시가 없다면, 스프링 부트에서 관리하는 라이브러리가 아니므로 버전 명시 - 기존 의존성 버전 변경하기 starter-parent 의 parent..
-
Null-Safety (스프링 핵심 기술 - 6)Programming/Spring Framework 주요 개념 2020. 3. 5. 18:58
컴파일 전에 사전에 널 포인트 exception을 방지하기 위함 - @NonNull - @Nullable - @NonNullApi (패키지 레벨 설정) - @NonNullFields (패키지 레벨 설정) public class Example { @NonNull public String createName(@NonNull String name){ return "Hello " + name; } } 인프런 백기선님 '스프링 프레임워크 핵심 기술' 강의를 듣고 정리한 내용입니다.
-
스프링 AOP (스프링 핵심 기술 - 5)Programming/Spring Framework 주요 개념 2020. 3. 5. 00:43
1. AOP (Aspect-Oriented Programming) 이란? - OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 - 흩어진 관심사들을 하나로 모아서 Aspect로 모듈화하는 기법 2. 주요 개념 - Aspect : 모듈 - Target : 적용되는 대상 (Class A, B) - Advice : 해야할 일 - Join Point : 합류 지점 (생성자 호출 전, 메소드를 호출하기 전, 필드에서 값을 가져갈 때...) - Pointcut : 어디에 적용되어야 하는지 3. 구현체 - AspectJ (다양한 Join Point를 사용해야 할 때) - 스프링 AOP - 둘을 연동해서 사용 가능 3. 적용 방법 - 컴파일 타임 : 컴파일 할 때, 조작된 자바 바이..
-
SpEL(Spring Expression Language) (스프링 핵심 기술 - 4)Programming/Spring Framework 주요 개념 2020. 3. 5. 00:01
1. SpEL 이란? - 객체 그래프를 조회하고 조작하는 기능을 제공한다 - #{"표현식"} - ${"프로퍼티"} - 표현식 안에 프로퍼티 사용이 가능 2. 실제로 어디에서 쓰이는지? - @Value 어노테이션 - @ConditionOnExpression 어노테이션 - 스프링 시큐리티 - 스프링 데이터 - Thymeleaf 3. 예제 @Component public class AppRunner implements ApplicationRunner { @Value("#{1 + 1}") int value; @Value("#{'hello ' + 'hongchan'}") String name; @Value("#{1 eq 1}") boolean bool; @Value("Hello") String str; @Valu..
-
데이터 바인딩 추상화 (스프링 핵심 기술 - 3)Programming/Spring Framework 주요 개념 2020. 3. 4. 23:17
데이터 바인딩이란? - 기술적인 관점 : 프로퍼티 값을 타겟 객체에 설정하는 기능 - 사용자 관점 : 사용자 입력 값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 즉, 입력 값은 대부분 '문자열'인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Book 같은 도메인 타입으로도 변환해서 넣어주는 기능 1. PropertyEditor - getValue, setValue 에서의 Value는 Property가 가지고 있는 값인데, 서로 다른 쓰레드에게 공유됨 (상태정보를 저장하고 있음, Thread Safe 하지 않음) 따라서, PropertyEditor의 구현체들은 여러 스레드에 공유해서 사용하면 안됨. (빈으로 등록해서 사용하면 안됨) -..
-
Resource / Validation (스프링 핵심 기술 - 2)Programming/Spring Framework 주요 개념 2020. 3. 4. 18:38
이전 포스트 정리 ApplicationContext는 BeanFactory 기능 뿐만 아니라 다양한 기능이 있음 (이벤트 퍼블리셔, 리소스 로더, 메시지...) 1. Resource 추상화 - java.net.URL을 추상화 한 것 - 스프링 내부에서 많이 사용하는 인터페이스 추상화 한 이유 - 클래스패스 기준으로 리소스를 읽어오는 기능 부재 (이 기능 많이 사용함) - ServletContext를 기준으로 상대 경로로 읽어오는 기능 부재 - 위의 기능 부재로, 새로운 핸들러를 등록하여 특별한 URL 접미사를 만들어 사용할 수는 있지만 구현이 복잡하고 편의성 메소드가 부족함 구현체 - UrlResource : 기본적으로 지원하는 프토토콜 http, https, file, jar.. - ClassPathR..
-
스프링 IoC 컨테이너와 빈 (스프링 핵심 기술 - 1)Programming/Spring Framework 주요 개념 2020. 3. 4. 01:16
1. 스프링 프레임워크의 디자인 철학 - 모든 선택은 개발자의 몫 (특정 기술을 강요하지 않음) - 다양한 관점을 지향한다 (유연성) - 하위 호환성을 지킨다 (노력) - API를 신중하게 설계한다 (공들인다) - 높은 수준의 코드를 지향한다 2. IoC (Inversion of Control) - 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 것이 아니라, 주입 받아 사용하는 방법을 말한다. - 가장 핵심이되는 최상위 인터페이스는 BeanFactory. 이의 하위 인터페이스는 ApplicationContext (BeanFactory + 다양한 기능이 추가됨) 3. 빈(Bean) - IoC 컨테이너가 관리하는 객체 - 빈으로 ..
-
안드로이드(자바) 코딩 컨벤션(Convention)Programming/JAVA 2020. 2. 16. 18:07
Android App 개발 프로젝트를 진행하게 되었는데, 협업을 위해 안드로이드 코딩 컨벤션을 정리하고 반영하여, 남들이 읽기 편한 클린 코드 작성 및 코드 리팩토링을 진행하려고 한다. 1. JAVA 규칙 - 예외를 무시하지 마세요. 예외를 무시하는 것이 적절하다고 확신하는 경우에는 마지막 수단으로 이를 무시할 수도 있지만 합당한 이유를 주석으로 남겨야 합니다. - 일반 예외를 캐치하지 마세요. Exception 으로 모든 예외를 캐치하려고 하는 경우 - 파이널라이저를 사용하지 마세요. 파이널라이저가 언제 호출될지 또는 호출이 되기는 할지는 보장되지 않습니다. - import 규칙 import를 정규화 하세요. import foo.*;// X import foo.bar; // O Android, 타사(c..