백엔드 28

레이어드 아키텍처(Layered Architecture)란?

레이어드 아키텍처(Layered Architecture)가 무엇인지 알아보겠습니다. 레이어드 아키텍처를 들어가기전에 소프트웨어 아키텍처가 무엇인지 먼저 알아보도록 하겠습니다. 소프트웨어 아키텍처란? 소프트웨어 아키텍처란, 소프트웨어 시스템의 전체적인 구조와 구성요소들 간의 상호작용을 설계하는 것을 말한다. 건축물로 비유해보자면 뼈대를 잡는 것과 같다. 어떤 자재를 사용하고 어떻게 조립하는지에 따라 건축물의 결과가 달라진다. 이와 비슷하게 소프트웨어 아키텍처는 시스템의 전체적인 동작을 결정하고, 시스템의 품질( 확장성(extensibility), 재사용성(reusability), 유지 보수 가능성(maintainabiliy), 가독성(readability) )에 직접적으로 영향을 미친다. 그만큼 소프트웨어..

백엔드 2023.10.12

Spring Security

인증: 적절한 사용자인지 파악한다. 권한: 특정한 작업을 수행할 권한이 있는지 파악한다. 가고 싶은 곳으로 가도록 하거나, 혹은 정보를 얻도록 허용하는 과정이다. 예시) 비행기 탑승 ㅡ> 여권, 신분증 검사(인증) ㅡ> 항공권으로 탑승 권한 부여(권한) MVC패턴은 모든요청을 Dispatcher Servlet이 인터셉트후 적절한 Controller로 연결해준다. Spring Security는 모든요청을 Spring Security이 인터셉트 후 (인증과 권한을 확인) Dispatcher Servlet으로 전송되고 적절한 Controller로 연결해준다. Spring Security Filter Chain CORS(Cross-Origin Resource Sharing) 브라우저에서 다른 출처의 리소스를 공..

responseBody

package com.in28minutes.springboot.myfirstwebapp.hello; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class SayHelloController { @RequestMapping("say-hello") @ResponseBody // 메시지가 리턴한 것 그대로를 브라우저에 리턴하는 것 public String sayHello() { return "Hello! What ..

logging 간단 정리

Log란 시스템 동작 시 시스템 상태, 작동 정보를 시간의 경과에 따라 기록한 것을 말합니다. 그리고 Logging이란 정보를 제공하는 일련의 기록인 Log를 생성하도록 시스템을 작성하는 활동을 말합니다. trace 로그에 있는 모든 정보 출력 debug 훨씬 더 많은 정보 출력 info 로깅된 모든 정보 출력 warning 조금 더 많은 정보 출력 error 오류와 예외만 출력 off 전체 로깅 끄기 위로 올라갈수록 점점 로그의 양이 많아진다.(좀 더 자세한 정보를 제공한다.) (복붙) 로그레벨 설명 TRACE 모든 메시지를 표시하기 위한 정보 DEBUG 프로그램 디버깅하기 위한 정보 INFO 상태변경, 서비스 동작 상태를 위한 정보 WARN 향후 잠재적으로 문제를 야기할 수 있는 정보 ERROR 의도..

Annotations vs XML Configuration

Annotations vs XML Configuration Annotations XML Configuration 편함 쉽다 어렵다(직접하나씩 설정해줘야됨) 코드 길이 짧다. 번거롭다 pojo(오래된 방식의 간단한 자바 오브젝트) 사용안함 자바코드를 바꿀 필요가 없다. 관리 쉽다. 어렵다 ex) 클래스 이름은 바꾸면 xml에서도 바꿔줘야함 사용빈도 자주사용 거의 사용안함 디버깅 난이도 어렵다 명시적으로 표현되어 있기때문에 디버깅이 조금 쉽다. 둘 다 사용해도 괜찮다. 하지만 사용을 한다면 어노테이션을 사용하던지, XML만 사용하던지 단 1개만 사용해야한다. 즉 둘을 섞어서 쓰면 안된다.

프로토타입 vs 싱글톤타입

package com.in28minutes.learnspringframework.examples.e1; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.*; import org.springframework.stereotype.Component; import java.util.Arrays; @Component class NormalClass { } @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) //프로토타입 클래스 @Component class PrototypeClass { } @Config..

스프링부트 시큐리티 4강 - 시큐리티 로그인(다시 공부 해야함)

package springSecurity.demo.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @Configuration // IoC 빈(bean)을 등록 ..

스프링부트 시큐리티 3강 - 시큐리티 회원가입

package springSecurity.demo.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @Configuration // IoC 빈(bean)을 등록 ..

스프링부트 게시판 API 서버 만들기 (1) - 프로젝트 생성

스프링부트 설정 yml 설정 resources 디렉토리에 있는 application.properties 설정 파일을, 가독성을 위해 application.yml 파일로 바꿔준다. build.gradle 설정 추가 다음을 추가하여 SQL 로그를 좀 더 보기 쉽도록 남기도록 한다. //p6spy 적용 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.7.1' 실행 잘 실행이 된다! 출처: https://ttl-blog.tistory.com/266?category=910686 스프링부트 게시판 API 만들기 (1) - 프로젝트 생성 제가 만들 게시판은 "에브리타임"과 같은 일반적인 게시판입니다. 질문을 올릴 수도, 정보공유를 할 수도, ..