스프링
-
의존성 주입 DI스프링 2024. 1. 15. 22:16
DI - 의존성 주입 DI는 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 의존관계가 고정되지 않도록 런타임 시전에 동적으로 관계를 주입하여 결합도를 낮출 수 있다. 의존성 주입이라는 말을 예시를 통해서 정확히 무엇인지 알아보겠다. A가 B를 의존한다 → 의존대상 B가 변하면 그것이 A에게 영향을 미친다. (요리사)가 (레시피)에 의존한다 “피자가게의 요리사는 피자의 레시피에 의존”한다. 피자 레시피가 변하면 요리사는 피자를 만드는 방법을 수정해야 한다. 왜냐하면 레시피의 변화가 요리사의 행위에 영향을 끼치기에 “요리사는 레시피에 의존한다” 라고 할 수 있다. 왜 필요한가? DI를 적용하지 않는다면, 객체들 간의 관계가 아니라 클래스 간의 관계가 맺어질 뿐만 아니라 ..
-
[스프링] 트랜잭션스프링 2023. 11. 1. 14:36
트랜잭션이란? DML [ select, insert, delete, update ]를 이용해서 DB의 상태를 변화시키기 위해서 수행하는 작업의 단위이다. 하지만, 작업의 단위는 질의어 한문장이 아닌, 많은 질의어 명령문들을 기준에 따라 정한다. -> 예를 들면, 사용자가 게시판에 글을 작성하고 저장한고 나서, 저장된 글을 본다고 가정하자. 그렇다면 DB의 입장에서는 insert & select 하는 건데, 이 두개를 합친 것이 하나의 작업단위이며, 하나의 트랜잭션이다. 트랜잭션의 Commit, Rollback commit : 하나의 트랜잭션 성공 후, DB가 일관성 있는 상태에 있을 때, 트랜잭션이 끝났다는 것을 알려주기 위한 연산이다. rollback : 하나의 트랜잭션이 비정상으로 종료되어 원자성이 ..
-
[스프링] Spring Security스프링 2023. 10. 24. 11:56
Spring Security란 spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임 워크이다. Spring Security는 인증과 권한에 대한 부분을 Filter 흐름에 따라 처리한다. 이 기능을 통해 보안과 관련해서 많은 옵션을 주기 때문에 개발자 입장에서는 보안관련 로직을 작성하지 않아도 된다는 장점이 있다. 인증(Authorizatoin)과 인가(Authentication) 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인하는 절차 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차 Spring Security는 기본적으로 인증 절차를 거친 후에 인가 절차를 진행하게 되며, 인가 과정에서 해당..
-
[스프링] 아키텍쳐스프링 2023. 10. 10. 11:57
아키텍쳐란? "하나의 서비스가 어떻게 구성이 되며 어떻게 동작이 된다" 라고 표현이 되는데, 즉, 서비스의 동작 원리를 나타내는 것 입니다. 프로젝트를 리딩할때, 해당 프로젝트에 대한 핵심 가치를 기준으로 내린 결정들의 집합이라고도 생각해 볼 수 있다. 결국 소프트웨어 개발에서 중심축 (요구 분석부터 구현 테스팅까지 작업의 뼈대 ) 역할을 한다 아키텍쳐 설계란? 시스템에 대한 아키텍쳐를 정하는 의사 결정 과정이라고 생각하면 됩니다! 즉, 소프트웨어 아키텍쳐란 의사 결정의 집합체라고 볼 수 있다. 아키텍쳐 스타일 1. 클라이언트 서버형 서버 - 강력한 성능으로 자원을 관리하며 클라이언트가 요청하는 기능이나 자원을 제공 클라이언트 - 서버에 있는 자원의 사용을 위하여 서버에 접속함 클라이언트 서버형 ( 출처..
-
[스프링] IoC, DI스프링 2023. 10. 4. 23:25
스프링 IoC 컨테이너 ‘제어의 역전’의 약어이며, 일종의 디자인 패턴중 하나 이다. 컨테이너는 보통 객체[ POJO ]의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것이다. 이 말은 객체[ POJO ]의 생성 및 생명주기 등 객체[ POJO ]의 모든 제어권이 바뀌었단 말이다. 결론, 객체[ POJO ]의 제어권이 “ 나(개발자) → 컨테이너 “ 이동한단 말이다. POJO란, 주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 지칭한다. -> Java Bean 객체가 대표적이다. 빈 등록방법 @Component @Bean IoC 사용이유 DI → 객체를 new해서 생성 하지 않고, IoC 컨테이너에 존재하는 Bean 주입하면, 싱글톤 문제 및 편..
-
[스프링] jar, war 차이점스프링 2023. 2. 1. 14:19
Jar file JAR = Java Archieve 라는 의미이다. - JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일 - Class (JAVA리소스, 속성 파일), 라이브러리 파일을 포함함 - JRE(JAVA Runtime Environment)만 있어도 실행 가능함 (java -jar 프로젝트네임.jar) Jar file structure 1. BOOT-INF : 개발자가 직접 작성한 클래스 파일들(classes)과, 의존성 주입을 통한 jar 파일(lib)들로 구성되어 있다. 2. META-INF : 프로젝트 매니페스트 파일(MANIFEST.MF)을 포함하는 폴더이다. 매니페스트 파일은 파일 그룹을 위한 메타데이터(이름, 버전 번호, 라이선스, 프로그램의 구성 등)를 포함하는 ..
-
[스프링] Loging 로깅스프링 2023. 2. 1. 13:43
로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-logging )가 함께 포함된다. 1. SLF4J - http://www.slf4j.org SLF4J Simple Logging Facade for Java (SLF4J) The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framewor www.slf4j.org 2. L..
-
[스프링] JDK17사용시에 주의할 점스프링 2023. 1. 27. 20:27
JDK17과 Mysql 연동시 주의할 점 코드를 먼저 봐보자! # database 연동 설정 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/{스키마이름 작성해주세요}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8 username: {username 작성해주세요} password: {pwd 작성해주세요} thymeleaf: cache: false # spring data jpa 설정 jpa: #database-platform: org.hibernate.dialect.MySQL5InnoDBDialect open-in-view: false s..