본문 바로가기

Java, Kotlin, Spring111

Spring PSA 예시 Spring PSA Portable Service Abstraction PSA는 잘 만들어진 인터페이스라고 할 수 있다. 각각의 개발자들이 만든 코드는 확정성이 좋지 못하거나 특정 기술에 특화되어 있을 수 있다. 개발자들이 공동으로 쓰는 모듈은 그 서비스가 추상화되어 각 개발자들이 통일적, 효율적, 그리고 보다 쉬운 코드 개발이 가능하다. 스프링 웹 MVC를 예를 들어보자. (Model View Controller) @Controller 애노테이션이 붙은 클래스에서 @GetMapping, @PostMapping 등을 이용해서 원하는 url을 매핑시킬 수 있다. 한편 @RequestMapping 어노테이션을 붙인 클래스에서 @RequestMapping(method=RequestMethod.GET), @Re.. 2021. 1. 9.
Spring AOP 예제 Spring AOP 스프링의 트라이앵글로 IoC, AOP, PSA 가 있다. 그 중 AOP를 공부해보자. AOP Aspect Oriented Programming, 관점지향 프로그래밍 OOP 는 같은 종류의 대상을 최상위 클래스로 부터 아래 클래스를 긴밀한 관계(추상화, 캡슐화, 상속, 다형성)로 설계를 지향하는 프로그래밍이라면, AOP는 종류가 다른 클래스 사이에서 효율적인 코드 설계(중복 제거 등)를 지향하는 프로그래밍이다. AOP를 구현하는 방법은 아래와 같다. sample.java 를 컴파일하여 sample.class 가 되는 사이에 AOP를 구현한다. (AspectJ) 바이트코드를 조작하여 sample.java ➞ sample.class 로 컴파일 후 실행시키는 과정에서 메모리에서 AOP를 구현.. 2021. 1. 8.
Spring IoC란 스프링 IoC IoC Inversion of Control, 제어의 역전 일반적인 의존성 제어권은 내가 사용할 의존성은 내가 만드는 것이다. 제어의 역전 (IoC)은 내가 사용할 의존성은 이미 만들어져 있는 것에 연결한다는 의미이다. 의존성 주입(DI, Dependency Injection)은 일종의 IoC 이다. IoC 컨테이너 BeanFactory 는 IoC 컨테이너다. ApplicationContext 는 BeanFactory 를 상속받는다. ApplicationContext 빈을 만들고, 의존성을 엮어주고 제공한다. Bean 인텔리제이에서 Bean은 '녹색 콩'으로 표시해준다. 애노테이션이 붙어있거나 특정 인터페이스를 상속한다. Bean 애노테이션으로 직접 빈으로 등록할수도 있다. Applicat.. 2021. 1. 8.
[Java] 패키지, import, 접근제어자 Java - Package 1 패키지 (Package) 자바에서 패키지는 관련된 클래스를 그룹화할 때 사용한다. 파일을 담는 폴더라고 생각하면 된다. 클래스 간 이름이 겹치는 것을 막고 유지하기 좋은 코드를 만들기 위해 패키지를 사용한다. 두 가지 패키지가 있다. 내장된 패키지 (Built-in packages) : Java API 로부터의 패키지 이다. Java API는 이미 쓰여진 클래스의 라이브러리이다. 자유롭게 사용가능하다. 사용자 정의 패키지 (User-defined package) 2 Import 임포트 키워드 자바 라이브러리는 패키지와 클래스로 나뉜다. import 키워드는 클래스나 패키지를 가져온다. import package.name.Class; // 하나의 클래스를 가져온다. impor.. 2021. 1. 6.
java - 상속, super, 오버라이딩, 추상클래스, final, Object 클래스 java 6 - 상속 백기선님의 https://github.com/whiteship/live-study 라이브 스터디 자바 공부입니다. 1 자바 상속의 특징 상속은 말 그대로 자식이 부모로부터 물려받는 것을 의미한다. 클래스 상속을 위해 extends 키워드를 사용한다. 자바에서 만드는 모든 클래스는 Object 클래스를 상속 받는다. 예제 Fruit.java public class Fruit { String name; public void setName(String name) { this.name = name; } } Apple.java public class Apple extends Fruit { } Apple 클래스에서 name 필드와 setName 메소드를 구현하지 않았지만, Fruit 클래스에서.. 2020. 12. 23.
[Spring Boot] 16 - DataBinder, 템플릿 엔진, 에러 핸들링 Spring Boot 016 - DataBinder, 템플릿 엔진, 에러 핸들링 7.1.9 ConfigurableWebBindingInitializer Spring MVC 는 특정 요청이 들어올 때 WebDataBinder를 초기화 시키기 위해 WebBindingInitializer를 사용합니다. ConfigurableWebBindingInitializer @Bean 을 생성하기 위해 스프링부트는 자동적으로 스프링 MVC를 설정합니다. 7.1.10 템플릿 엔진 REST 웹 서비스 뿐 아니라, 스프링부트를 사용해서 동적 HTML 컨텐츠를 서비스할 수 있습니다. Spring MVC는 다양한 템플릿 기술을 지원합니다. FreeMarker Groovy Thymeleaf Mustache 가능하다면 JSP는 사용을.. 2020. 4. 7.
[Spring Boot] 15 - WebJar, 컨텐츠 협상 Spring Boot 14 이어서... 또한 /webjars/** 경로에 있는 모든 리소스는 jar 파일로부터 서비스됩니다. 애플리케이션이 jar로 패키지되어있다면 src/main/webapp 폴더는 사용하지 않습니다. 스프링 부트는 Spring MVC에 의해 제공되는 심화된 소스 핸들링 특징을 지원합니다. version agnostic URLs : 버전을 명시할 필요없게 만들어 줌 cache-busting : 캐시값으로 변경된 내용을 계속 반영하도록 업데이트시킴 Webjars를 위한 버전 agnostic(배우지 않아도 사용하기 쉬운) URL을 사용하기 위해서는 webjars-locator-core의존성을 추가해야 합니다. 예시) resource/static/hello.html Hello Static 이.. 2020. 4. 7.
[Spring Boot] 14 - HttpMessageConverter, Static 리소스 맵핑 Spring Boot 014 - HttpMessageConverter, Static 리소스 맵핑 jackson : Java Object를 JSON로 또는 반대로 변환하는 라이브러리 gson : json 을 생성하고 파싱하는 라이브러리 단축키 Tip: Search everything(including code and menus) (Press Shift twice) RestController는 return 타입을 @ResponseBody 를 붙여준 것이나 다름없습니다. 따라서 RestContoller를 사용한다는 것은 httpMessageConverter를 쓴 것과 동일합니다. String converter는 복합객체에서 사용되지 않습니다. 기본적으로 json 형태로 변환되고, 불러올 클래스에 @XmlRoo.. 2020. 4. 7.
[Spring Boot] 13 - Web Application 개발 Spring Boot 013 - Web Application 개발 7. Developing Web Application Spring Boot는 웹 애플리케이션 개발에 아주 잘 어울립니다. HTTP 서버가 내장된 서버를 Tomcat, Jetty, Undertow, Netty 등 내장 프로그램을 사용해서 만들 수 있습니다. 대부분 웹 애플리케이션은 spring-boot-starter-web으로 실행할 수 있습니다. reactive web 애플리케이션은 spring-boot-webflux 모듈을 사용할 수 있습니다. 7.1 Spring Web MVC Framework Spring Web MVC 프레임워크(간단히 Spring MVC라고 부릅니다.)는 "모델 뷰 컨트롤러" 웹 프레임워크입니다. @Controlle.. 2020. 4. 7.
[Spring Boot] 12 - 커스텀 로그 설정 Logback Spring Boot 012 - 커스텀 로그 설정 logback 스프링 프로파일 사용 4.6 Custom Log 설정 다양한 로깅 시스템은 classpath에 있는 적절한 라이브러리를 포함시켜 활성화시킬 수 있습니다. 루트 classpath 또는 logging.config 위치에 명시하여 적절한 설정을 커스터마이징 할 수 있습니다. org.springframework.boot.logging.LoggingSystem 에 원하는 시스템을 명시합니다. 그렇게 권장하진 않습니다. 로깅은 ApplicationContext 가 생성되기 전에 초기화됩니다. 따라서 @Configuration 파일의 @PropertySoruce 로부터 로깅을 제어할 수는 없습니다. 로깅 시스템을 제어할 수 있는 유일한 방법은 시스템 p.. 2020. 4. 1.
728x90