[INTELI J] 롬복 설치
2021. 6. 16. 15:05
스프링
build.gradle plugins { id 'org.springframework.boot' version '2.5.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'hello' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' //lombok 설정 추가 시작 configurations { compileOnly { extendsFrom annotationProcessor } } //lombok 설정 추가 끝 repositories { mavenCentral() } dependencies { implementation 'org.springframework...
객체 지향 설계와 스프링
2021. 6. 5. 00:35
스프링
스프링 이야기에 왜 객체 지향 이야기가 나오는가? - 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 - DI(Dependency Injection) : 의존관계, 의존성 주입 - DI 컨테이너 제공 - 클라이언트 코드의 변경 없이 기능 확장 - 쉽게 부품을 교체하듯이 개발
좋은 객체 지향 설계의 5가지 원칙 (SOLID)
2021. 6. 5. 00:25
스프링
SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 - SRP : 단일 책임 원칙 (Single responsibility principle) - OCP : 개방-폐쇄 원칙 (Open/closed principle) - LSP : 리스코프 치환 원칙 (Liskov substitution principle) - ISP : 인터페이스 분리 원칙 (Interface segregation principle) - DIP : 의존관계 역전 원칙 (Dependency inversion principle) SRP 단일 책임 원칙 Single responsibility principle - 한 클래스는 하나의 책임만 가져야 한다. - 하나의 책임이라는 것은 모호한다. - 클 수 있고, ..
좋은 객체 지향 프로그래밍이란?
2021. 6. 3. 15:53
스프링
객체 지향 특징 - 추상화 - 캡슐화 - 상속 - 다형성 객체 지향 프로그래밍 - 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (협력) - 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 유연하고, 변경이 용이? - 레고 블럭 조립하듯이 - 키보드, 마우스 갈아 끼우듯이 - 컴퓨터 부품 갈아 끼우듯이 - 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 다형성의 실세계 비유 - 실세계와 객체 지향을 1:1로 매칭 X - 그래도 실세계의 비유로 이해하기에는 좋음 - ..
스프링이란?
2021. 6. 3. 15:36
스프링
스프링 프레임워크 - 햭심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 - 웹 기술 : 스프링 MVC, 스프링 WebFlux - 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원 - 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링 - 테스트 : 스프링 기반 테스트 지원 - 언어 : 코틀린, 그루비 - 최근에는 스프링 부트를 통해서 스프림 프레임워크의 기술들을 편리하게 사용 스프링 부트 - 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 - 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 - Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 - 손쉬운 빌드 구성을 위한 starter 종속성 제공 - 스프링과 3rd Part..
[Spring] AOP
2021. 6. 2. 23:58
스프링
AOP AOP가 필요한 사항 - 모든 메소드의 호출 시간을 측정하고 싶다면? - 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) - 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? aop 패키지 생성후 - 안에 TimeTraceAop 클래스 파일 생성 package hello.hellospring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Aspect @Com..
[Spring Boot] InteliJ 5. H2 데이터베이스 설치
2021. 6. 1. 16:16
스프링
-> 이번 장은 앞서 메모리에 저장했던 방식을 데이터베이스에 저장하는 방식으로 수정함 H2 데이터베이스 설치 -> h2데이터베이스는 교육용으로 좋음, 용량도 작고, 웹의 admin 화면도 제공해줌 https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2 M..
[Spring Boot] 4. InteliJ 정적 컨텐츠 방식, MVC, API
2021. 5. 21. 00:01
스프링
정적 컨텐츠 방식 static - hello-static.html 생성 hello-static.html 정적 컨텐츠 입니다. MVC 방식 HelloController package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloController { @GetMapping("hell..
[Spring Boot] 3. InteliJ 빌드
2021. 5. 20. 23:30
스프링
cmder 설치 https://aamoos.tistory.com/253 cmder 설치 — 일라얌의개발블로그 aamoos.tistory.com Window일 경우 cmder 실행 - 빌드할 프로젝트 폴더 - gradlew.bat build 입력 빌드가 잘안되면 gradlew.bat clean build -> 아래에 build 폴더가 생성된거를 볼수 있음 build/libs 폴더 안에 접속해서 java -jar 빌드된 jar파일.jar를 입력 ex) java -jar hello-spring-0.0.1-SNAPSHOT.jar -> 해당 jar가 8080 port로 start된것을 볼수 있음 서버 stop ls -arlth
[SPRING BOOT] 2.InteliJ Hello 찍기
2021. 5. 20. 22:05
스프링
resources - static - index.html 생성 index.html Hello hello controller - hello 찍기 1. controller 패키지 만들고 안에 HelloController 생성 2. resources - templates 폴더안에 hello.html 생성 HelloController.java package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class ..