Spring 24

스프링 프레임워크

프레임워크? - 뼈대나 근간을 이루는 코드들의 묶음을 칭함 프레임워크 사용 이유 - 프로그램의 기본 흐름이나 구조를 정한다. - 구조에 자신의 코드를 추가하는 방식으로 개발한다. - 일정한 품질이 보장되는 코드의 개발이 가능하다. - 개발시간이 단축된다. 스프링 프레임워크 차별성 - 복잡함 보다는 간단하고 경량화된 프레임워크이다.(EJB 보다 가볍고 간결하다) - 프로젝트의 전체구조를 설계할 때 유용 전체를 설계하는 용도로 사용, OOP 개념의 구조, 의존성 주입 - 다른 프레임워크 간의 통합을 지원, 여러 종류의 프레임워크의 혼용 가능성 증대 - 개발의 생산성과 개발도구의 지원으로 코드의 양이 줄어듬 스프링의 특징 - POJO 기반의 구성 -> 일반적인 자바코드를 이용해서 객체를 구성하는 방식을 스프링..

Spring 2020.02.17

JDBC vs MyBatis 차이

JDBC vs MyBatis 차이 JDBC MyBatis 직접적인 Connection을 닫고, 마지막에 close()필수 PreparedStatement 직접 생성 및 처리 해야한다. PreparedStatement의 setXX() 등의 처리를 개발자가 처리해야한다 Select의 경우 직접 ResultSet 처리 해야한다. 자동적으로 Connetion을 닫고, 처리해준다 MyBatis 내부적으로 PreparedStatement 처리가 가능하다 #{prop}와 같이 속성을 지정하면 내부적으로 자동처리 된다. 리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리가 가능하다.

Spring 2020.02.05

스프링 특징

스프링 특징 Spring 스프링 = 프레임워크 = 뼈대나 근간을 이루는 코드들의 묶음 들의 집합 사용이유 - 개발자 들의 차이를 극복하기 위한 사용 개발자의 코드 스타일은 다 다르다. 따라서 통일된 코드들의 집합을 제공해줄 필요성이 있으므로 사용한다. - 개발의 속도를 증대 시킬 수 있다. 이미 개발되어진 상태의 소스들을 프레임워크를 통해서 제공함으로 개발자들은 개발의 속도를 증대 시킬 수 있다. - 품질이 보장되는 프로그램을 만들 가능성이 커진다. 개발자 측면에서는 완성된 형태의 소스들이 제공 되므로 개발시간 단축은 물론 품질이 보장되는 프로그램을 생성 할 수 있다. 스프링프레임워크 장점 - OOP 구조 기반의 뒷받침 하고 있는 구조(DI와 관련) - 다른 프레임워크와 연계된 지원이 가능함으로 최소한의..

Spring 2020.02.03

Spring Security 관련 참고사항

https://docs.spring.io/spring-security/site/docs/current/guides/html5/helloworld-boot.html Hello Spring Security with Boot This guide provides instructions on how to add Spring Security to an existing Spring Boot application. docs.spring.io 방법 정리 1. 스프링 보안 구성 생성 다음 단계는 스프링 보안 구성을 생성하는 것입니다. 2. 패키지 탐색기보기에서 spring-security-samples-boot-insecure 프로젝트를 마우스 오른쪽 단추로 클릭하십시오. 3. 새로 만들기 → 클래스를 선택하십시오. 패키..

Spring 2019.11.22

스프링 시큐리티

인증(Authentication) - 인증을 통해 사용자를 식별 인가(Authorization) - 인가를 통해 시스템 자원에 대한 접근을 통제 Ex) 사원증 ( 입구에서는 모두 사원증을 통해 입장(인증)-> 사무실, 제한된 구역에 따른 입장 할 수 있는 권한(인가)를 통해 관리 개인적으로 전에 적용했던 부분은 -> 세션을 통한 로그인 (HttpSession) 1. 세션을 체크 2. 로그인 성공 -> 관리자 권한만 게시글 삭제 3. 문제점 - 유지보수 과정중에 인증/인가 관련된 코드를 모든 클래스 메소드 마다 적용하면 유지보수가 어렵다. - 모든 사이트 내에 아무런 제약과 조건 없이 모두 접근이 가능해진다. 4. 해결점 - HttpSession을 통한 인증/인가 방법은 코드를 모든 클래스 메소드마다 적용..

Spring 2019.11.20

Springboot Thymeleaf 적용방법

Springboot Thymeleaf 적용 템플릿 엔진 - 데이터와 이 데이터를 표현 해줄 템플릿을 결합해주는 도구 - 템플릿은 HTML과 같은 마크 업이고 데이터는 데이터베이스에 저장된 데이터를 의미 - 템플릿 엔진을 이용하여 화면을 처리, 고정된 데이터에 다양한 템플릿을 적용가능하다. - 데이터와 분리된 화면 개발 및 관리가 가능 템플릿 엔진 적용 - 사용자에게 제공되는 화면과 데이터를 분리하여 관리 - 스프링부트의 지원하는 템플릿 ex) Thymeleaf,Freemarker,Mustache,GroovyTemplates Springboot Thymeleaf 적용방법(maven 프로젝트 기준) - 1) pom.xml 들어간다. - 2) Ctrl+Spacebar -> Edit Starters 를 클릭 -..

Spring 2019.11.18

Springboot JPA 쿼리메소드 사용하기

쿼리 메소드 - 메소드의 이름으로 필요한 쿼리를 만들어주는 기능 - 간단한 가지수의 네이밍 룰를 통해 바로 사용이 가능하다. 쿼리메소드를 이용할 때 가장 많이 사용하는 문법 - 검색대상의 엔티티에서 특정 변수의 값만 조회하는 것 - 메소드 이름을 find로 시작하면서 조회할 변수들을 조합해서 사용 find+엔티티 이름+By+변수이름 예시) findBoardByTitle(): Board 엔티티에서 title 변수 값만 조회한다. 쿼리 메소드 작성 팁 - 쿼리 메소드를 작성할 때에 엔티티 이름은 생략할 수 있다. 엔티티 이름이 생략되면 현재 사용하는 Repository 인터페이스에 선언된 타입정보를 기준으로 자동으로 엔티티 이름이 적용 된다. ex) BoardRepository인터페이스를 다음과 같이 작성했..

Spring 2019.11.17

springboot JPA Annotation 정리

Springboot JPA에 관련 되어서 개인적으로 Annotation을 정리 어노테이션 의미 @Entity @Entity가 설정된 클래스를 엔티티라하며, 기본적으로 클래스 이름과 동일한 테이블과 매핑된다. @Table 엔티티 이름과 매핑될 테이블 이름이다른경우, name속성을 사용하여 매핑한다. 엔티티 이름과 테이블 이름이 동일하면 생략해도 된다. @Id 테이블의 기본 키를 매핑한다. 엔티티의 필수 어노테이션으로서 @Id가 없는 엔티티는 사용하지 못한다. @GeneratedValue @Id가 선언된 필드에 기본 키 값을 자동으로 할당한다. 다양한 옵션이 있지만 @GeneratedValue만 사용하면 설정된 데이터베이스에 따라서 JPA가 자동으로 결정해준다.(H2는 시퀀스를 이요하여 처리) 테이블과 매핑..

Spring 2019.11.16

Springboot 자동설정 및 의존성 관리

Springboot의 구성하는 핵심요소 3가지 1. 스타터(Starter) - 기능: 스프링이 제공하는 특정 모듈을 사용할 수 있도록 관련된 라이으버리 의존성을 해결한다 2. 자동설정(AutoConfiguration) - 기능: 스타터를 통해 추가한 모듈을 사용할 수 있도록 관련된 빈 설정을 자동으로 처리 해준다. 3. 액추에이터(Actuator) - 기능: 스프링부트로 개발된 시스템을 모니터링 할 수 있는 다양한 기능을 제공한다. mvn Repository 가서 -> Hibernate ORM Hibernate EntityManager설정 [pom.xml]에 위의 사항을 추가하면 쉽게 환경을 구축할 수 있다. 스프링과 스프링부트의 의존성 비교 - 스프링의 연동은 JPA 외의 spring-orm.jar /..

Spring 2019.11.14

Lombok

Lombok - 소스 간결화 - 도메인 클래스에 메소드를 반복적으로 작성하는 것을 편리하게 해줌 Lombok을 사용하는 이유 - 자바 파일을 컴파일할 때, 자동으로 생성자, Getter,Setter, toString() 같은 코드를 자동으로 추가 해준다. 또한 Getter/Setter/toString() 부분에 대한 소스도줄어들어 소스의 간결화를 도와준다. Lombok을 사용 전의 코드 package com.rubypaper.chapter01.domain; import java.util.Date; public class BoardVO { private int seq; private String title; private String writer; private String content; private ..

Spring 2019.11.13