스프링 입문

AOP코드 작성 시 핵심 관심 사항과 공통 관심 사항을 나눠서 개발을 해야한다.공통 관심 사항 (cross-cutting concern) ex) 주로 기능 수행 별 시간 측정핵심 관심 사항 (core concern) ex) 회원 가입, 조회 .... 공통 관심 사항과 핵심 관심 사항이 코드에 섞여있으면 유지보수도 어려워지고 공통 로직으로 만들기 매우 어렵다. AOP (Aspect Oriented Programing, 관점 제약 프로그래밍) : 공통 관심 사항과 핵심 관심 사항을 분리하는 것. AOP 사용 방법별도의 AOP 클래스를 생성해서 @Aspect로 선언해준다.AOP로 만들 기능을 메소드로 구현한다.ProceedingJoinpoint를 매개 변수로 받는다.AOP 메소드 내부에서 joinPoint.p..
스프링 DB 접근 기술스프링 DB 접근 기술 사용 시대별 흐름Jdbc -> Spring JdbcTemplate -> JPA -> 스프링 데이터 JPA Jdbc : 자바에서 DB에 접속할 수 있도록 하는 자바 APISpring Jdbc Template : 자바에서 제공하는 애플리케이션에서 DB로 SQL을 편리하게 보낼 수 있는 기술JPA : SQL을 개발자가 직접 작성하지 않아도 쿼리를 자동으로 만들어주며 객체를 DB에 쿼리 없이 저장하고 관리할 수 있는 기술이다.스프링 데이터 JPA : JPA를 편리하게 사용할 수 있도록 한 번 감싼 기술 프로젝트 최상위 디렉토리에서 패키지 sql에 ddl.sql 파일을 만들어서 sql 쿼리도 관리하는 것이 좋다. 만들어두면 Git을 통해서 함께 관리할 수 있어서 좋다...
회원 관리 예제@Controllerpublic class HomeController { @GetMapping("/") public String home() { return "home"; }} 보통 기본 URL + / 이면 메인 페이지 (Welcome Page)로 URL 요청이 오면 Controller에서 관련 내용이 있는지 찾는다.Controller에 관련 내용이 있다면 그 화면을 띄우게 되고 없다면 static/index.html을 Welcome Page로 띄우게 된다. @Controllerpublic class MemberController { private MemberService memberService; @Autowired public MemberCo..
스프링 빈과 의존관계Controller가 Service를 통해 기능을 수행(회원가입, 데이터를 조회....)할 수 있어야 한다.=> Controller가 Service를 의존한다.Controller와 Service에는 의존관계가 있다.  Controller를 작성할 때 클래스 선언부 상단에 @Controller 어노테이션을 작성해줘야한다.Service는 @Service, Repository는 @Repository로 명시한다.Controller, Service, Repository를 어노테이션으로 명시해줌으로 스프링에서 관리해야 할 클래스임을 스프링에게 알려주는 역할이다.스프링이 실행되면 스프링 컨테이너가 생긴다. @Controller, @Service, @Repository 어노테이션을 선언한 클래스의 ..
비지니스 요구사항 정리일반적인 웹 애플리케이션 계층 구조Controller - 웹 MVC의 컨트롤러 역할Service - 핵심 비지니스 로직 구현Repository - 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리Domain - 비지니스 도메인 객체 (회원, 주문 ...)회원 도메인과 레포지토리 만들기동시성 문제 해결KEY - VALUE 데이터를 쌍으로 저장하기 위해 HashMap 보다는 ConcurrentHashMap을 사용한다.long 보다 CAS 연산을 하는 AtomicLong을 사용한다. Optional - 객체를 편하게 처리하기 위해 만들어진 클래스로, NPE 예외를 방지하도록 도와주며 null 처리를 보다 쉽게 할 수 있도록 도와주는 클래스이다.테스트 케이스 작성main()이나 컨트..
정적 컨텐츠정적 컨텐츠 : 클라이언트의 요청을 받고 서버에서 하는 것 없이 html 파일 그대로 보여주는 것. 정적 파일이 그대로 웹 브라우저에게 내려주는 방식으로 프로그래밍 할 수 없다.MVC와 템플릿 엔진템플릿 엔진 : JSP, PHP와 같은 것들로 html을 그대로 보여주는 것이 아닌 서버에서 프로그래밍을 해서 동적으로 변경해서 보여주는 것. 템플릿 엔진을 사용하기 위해서 MVC (Model - View - Controller) 방식으로 쪼개서 View를 템플릿 엔진으로 프로그래밍한 것으로 렌더링해서 렌더링이 된 html을 웹 브라우저에게 내려준다.서버에서 html을 동적으로 변형을 해서 웹 브라우저에게 전달하는 방식이다. Model1 방식 : 예전 방식으로 Controller, View를 따로 나..
SpringBoot 프로젝트 환경설정https://start.spring.io/스프링 부트 기반으로 스프링 프로젝트를 만들어주는 사이트 빌드 도구 : 필요한 라이브러리를 가져오고 Build하는 라이프 사이클까지 관리해주는 툴소스코드를 애플리케이션으로 만드는 일련의 작업들을 자동화하여 실행 가능한 애플리케이션으로 만들어준다.라이브러리의 의존 관계를 관리해준다.하나의 라이브러리를 추가하면 해당 라이브러리와 관련되서 필요한(의존 관계에 있는) 라이브러리들을 모두 추가해준다.대부분 Maven보다 Gradle을 많이 쓰는 추세이다.빌드 도구의 종류Maven Apache 기반 자바용 프로젝트 관리 도구XML을 이용한 빌드 시스템Gradle오픈 소스 기반의 빌드 자동화 시스템JVM,  Android OS 기반의 빌드..
h2boom
'스프링 입문' 태그의 글 목록