본문 바로가기
728x90
반응형

Dev/Spring7

[스프링 프레임워크 입문] PSA PSA (Portable Service Abstraction) PSA란 환경의 변화와 관계 없이 일관된 방식의 기술 접근 환경을 제공하려는 구조이다. 해당 강의에서 사용하는 PetClinic은 서블릿 애플리케이션임에도 서블릿이 존재하지 않는다. 간단하게 @Controller 어노테이션이 붙어있는 클래스에서 @GetMapping, @PostMapping 과 같은 @RequestMapping 사용해서 요청을 매핑한다. 실제로는 내부적으로 서블릿 기반으로 코드가 동작하고 서블릿 기술은 추상화 계층에 의해 숨겨져 있다. 이렇게 추상화 계층을 사용하면 우리는 편하게 개발을 할 수 있다. 스프링은 주로 다양한 기술(Spring MVC, Spring Transaction, Spring Cache...)에 Servic.. 2020. 11. 18.
[스프링 프레임워크 입문] AOP AOP (Aspect Oriented Programming) 관점 지향 프로그래밍으로 애플리케이션에서의 공통 기능(관심사)를 핵심적인 기능에서 분리하고 분리한 기능을 Aspect라는 모듈을 이용하여 설계 및 개발하는 방법 ※ 분리된 기능은 핵심 기능이 존재하는 클래스에 코드로 존재하지 않는다. AOP 주요 용어 Target : 핵심 기능을 담고 있는 모듈. 부가기능을 부여할 대상 Advice : 타겟에 제공할 부가기능을 담고 있는 모듈 JoinPoint : 어드바이스가 적용될 수 있는 위치. 타겟 객체가 구현한 인터페이스의 모든 메서드는 조인포인트 PointCut : 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식 Aspect : AOP의 기본 모듈 Weaving : 포인트컷에 의해 결정된 타겟의.. 2020. 11. 18.
[스프링 프레임워크 입문] IoC IoC (Inversion of Control) 제어의 역전, 내가 사용할 의존성을 내가 만드는 것이 아닌 외부의 다른 누군가가 만들어 주는 것 예제 // OwnerController.java @Controller class OwnerController { private static final String VIEWS_OWNER_CREATE_OR_UPDATE_FORM = "owners/createOrUpdateOwnerForm"; private final OwnerRepository owners; private VisitRepository visits; public OwnerController(OwnerRepository clinicService, VisitRepository visits) { this.o.. 2020. 11. 17.
[스프링 프레임워크 입문] 과제 1. Owner 조회 시 LastName 이 아닌 FirstName 으로 조회 First name Error // OwnerController.java @GetMapping("/owners") public String processFindForm(Owner owner, BindingResult result, Map model) { // find owners result collection Collection results = null; // empty result value String emptyVal = ""; // allow parameterless GET request for /owners to return all records if (owner.getLastName() == null || "".e.. 2020. 8. 14.
[스프링 프레임워크 입문] 프로젝트 살펴보기 프로젝트 구조 Spring Boot 프로젝트 기반으로 기본 Maven 프로젝트 구조와 동일하며 간단하게 Main Application을 실행하여 Application을 동작시킬 수 있다. 또한 Web Application임에도 Java Application으로 동작할 수 있다. 그 이유는 내장 Tomcat이 존재하기 때문. 로그 설정 // application.properties #Logging logging.level.org.springframework=INFO // package 별로 Log level 을 다르게 줄 수 있다. #logging.level.org.springframework.web=DEBUG #logging.level.org.springframework.context.annotaion=.. 2020. 8. 13.