spring 8

Spring Quick Start - 내용 정리(2)

1. 스프링 AOP 비즈니스 컴포넌트 개발에서 가장 중요한 두 가지 원칙은 낮은 결합도와 높은 응집도 스프링의 의존성 주입을 이용하면 비즈니스 컴포넌트를 구성하는 객체들의 결합도를 떨어뜨릴 수 있어서 의존관계를 쉽게 변경 가능 IoC - 결합도 vs. AOP - 응집도 AOP 이해하기 AOP(Aspect Oriented Programming)은 예외, 트랜잭션 등의 부가적인 코드들을 효율적으로 관리하는 데 주목 관심 분리(Separation of Concerns) 횡단 관심 : 메소드마다 공통으로 등장하는 로깅, 예외, 트랜잭션 처리 등의 코드 핵심 관심 : 사용자 요청에 따라 실제로 수행되는 핵심 비즈니스 로직 두 관심을 완벽하게 분리할 수 있다면 간결하고 응집도 높은 코드 유지 가능. 하지만 독립적인..

💻/BOOK 2021.03.25

Spring Quick Start - 내용 정리(1)

1. 개발 환경 구축 JDK 설치 -> 이클립스 EE 설치 -> tomcat 서버 설치 및 연동 -> 데이터베이스 구축(h2) -> STS(Spring Tool Suite) 플러그인 설치 2. 프레임워크 개요 프레임워크 개념 "뼈대 혹은 틀". 아키텍처에 해당하는 골격 코드 제공. 개발자에게 모든 것을 위임하지 않고, 애플리케이션의 기본 아키텍처는 프레임워크가 제공하고 그 뼈대에 살을 붙이는 작업만 개발자가. 장점 빠른 구현 시간 : 개발자는 비즈니스 로직만 구현하면 됨 쉬운 관리 : 같은 프레임워크 적용된 App은 아키텍처 같아서 관리 쉬움. 유지보수도 효율적. 개발자들의 역량 획일화 : 숙련자/초심자의 차이가 적음. 개발 인력 효율적 구성 가능. 검증된 아키텍처의 재사용과 일관성 유지 : 별다른 검증..

💻/BOOK 2021.03.24

[스프링+리액트 웹 만들기] #2. DB 설계하기

이전 글 : [스프링+리액트 웹 만들기] #1. 환경 세팅하기 DB로는 MySQL을 이용했다. formapp 이라는 이름으로 스키마를 생성했고, 대략적인 구조는 아래 그림과 같다. 1. USER user 정보를 저장해두는 테이블. userIdx가 PK로 들어가고 id와 password 칼럼을 생성했다. password가 그대로 DB에 들어가는 보안 문제를 막기 위해서는 암호화 시킨 값을 password 대신 DB에 저장하도록 하는 것이 좋지만, 로컬에서만 돌려보는 개인 공부용 프로젝트이므로 그냥 진행했다..^0^ 2. FORM 설문 정보 저장해두는 테이블. formIdx를 PK로 가지고, 작성자 id, 설문 제목, 생성 시간을 칼럼으로 두었다. 생성 시간인 createdAt 칼럼은 디폴트를 CURRENT..

💻/SPRING + REACT 2021.03.24

[스프링+리액트 웹 만들기] #1. 환경 세팅하기

이전 글 : [스프링+리액트 웹 만들기] #0. 프로젝트 개요 항상 제일 어렵고 예외 상황도 많고 알 수 없는 에러도 많은 환경 세팅부터! 저장소에 front와 back으로 폴더를 나누어서 front 폴더는 VS Code로, back 폴더는 intelliJ로 접근했다. (처음 프로젝트를 생성하고 시작할 때는 이클립스 EE를 이용했고, 나중에 이를 intelliJ로 열어서 사용했기 때문에 back 쪽은 조금 혼란이 있을 수 있음...) BACKEND 먼저 백엔드에 대한 환경 설정을 해보겠다. IDE로는 IntelliJ를 사용하는데, 아직 학생이신 분들은 학생 인증을 받아 무료 설치할 수 있으므로 찾아보시길 바란다. 이전 글에서 스프링 프레임워크를 시도하다가 설정 에러에 스트레스를 받아서 부트로 변경했다고 ..

💻/SPRING + REACT 2021.01.27

[스프링+리액트 웹 만들기] #0. 프로젝트 개요

백엔드 개발자라는 방향을 잡은 후, 항상 공부해야지 라는 마음만 먹고 미뤄뒀던 스프링... 기초 개념을 아무리 봐도 감이 빨리 잡히지 않았고 실제 구조와 연결이 안돼서 개인적으로 늘 부담스러웠었다. 하지만 인턴십을 하면서 과제로 받은 프로젝트가 Spring + React 를 사용해서 간단한 웹 만들기였고, 드디어 스프링에 손을 대게 되었다.🙃 (기업 인턴십 과제이긴 하지만 실제 기업 내의 주요 정보나 데이터를 전혀 포함하고 있지 않다.) 매번 구글링하고 책을 뒤져가며 어찌저찌 만든 나의 작고 귀여운 웹 프로젝트 정리를 해보자. 📌 프로젝트 개요 간단한 설문지를 생성하고 조회할 수 있는 CRUD 중심의 웹. 게시판과 비슷하지만 게시글 대신 설문지가 있고, 설문에 응답할 수 있다는 차이점이 있다. 설문지에서..

💻/SPRING + REACT 2021.01.27

[스프링 스터디] 3주차 - 트랜잭션, 보안

트랜잭션 정의 여러 개의 DML 명령문을 하나의 논리적인 작업 단위로 묶어서 관리하는 것 ALL 또는 Nothing 방식으로 작업을 처리함으로써 작업의 일관성 유지] 트랜잭션 처리 = 어떤 한 작업 묶음 속에서 문제가 발생했을 경우, 원상복구 시키는 것 데이터 무결성 유지 트랜잭션의 특징(ACID) Atomicity(원자성) : 트랜잭션은 자기의 연산을 전부 또는 전무 실행만이 있지 일부 실행으로 트랜잭션의 기능을 갖는 것은 아니다. Consistency(일관성) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환한다. 즉, 트랜잭션 실행의 결과로 데이터베이스 상태가 모순되지 않는다. Isolation(격리성) : 트랜잭션이 실행 중에 있는 연산의 중간 결과는 다른 트..

💻/스터디 2020.08.03

[스프링 스터디] 2주차 - 프로젝트 구조, 실습 개념 정리

Spring 프로젝트 구조 IntelliJ의 프로젝트 구조 Eclipse IntelliJ Workspace Project Project Module IntelliJ에서는 한 프로젝트 내에 여러개의 모듈로 구성되어 있다. 지난 프로젝트로 디렉토리 구조 살펴보기! controller : DispatcherServlet에서 전달된 요청을 처리 index.jsp : 뷰(.jsp) applicationContext.xml : 스프링 컨테이너 설정 파일 dispatcher-servlet.xml : 클라이언트의 요청을 최초로 받아서, 이를 컨트롤러에게 전달 web.xml : DispatcherServlet 맵핑, 스프링 설정 파일 위치를 정의 src/main ~/java : 자바 클래스(컨트롤러, 모델, DAO, V..

💻/스터디 2020.08.03

[스프링 스터디] 1주차 - 서버의 개념, MVC 패턴, Framework vs. Library, Spring Framework

서버의 개념 1. 서버의 역할 클라이언트가 요청을 하면 서버에서 응답 값을 보냄 2. HTTP와 CRUD HTTP(Hyper Text Transfer Protocol) : 하이퍼미디어 문서를 주고 받을 수 있는 프로토콜. http 형식으로 클라이언트와 서버가 요청/응답을 주고받음. (json, xml 형태 등으로 제공) { "articles" : [ {"title": "안녕하세요"}, {"title": "서버 스터디!"} ] } CRUD : 기본적인 데이터 처리 기능. Create - POST Read - GET Update - PUT Delete - DELETE 3. 서버 아키텍처 WAS : 웹 서버로는 처리할 수 없는 동적 컨텐츠인 데이터베이스 조회 및 로직 처리를 담당한다. 사전적 정의로는 인터넷 ..

💻/스터디 2020.08.03