Backend/spring 11

Spring WebSocket

Spring WebSocket 사용 방법 1. 의존성 추가 Maven pom.xml 파일에 다음과 같이 의존성을 추가합니다: org.springframework spring-messaging Gradle build.gradle 파일에 다음과 같이 의존성을 추가합니다: implementation 'org.springframework:spring-messaging' 2. WebSocket 설정 WebSocket 엔드포인트를 등록하는 설정 클래스를 작성. WebSocketConfigurer 인터페이스를 구현하거나 @EnableWebSocket을 사용하여 WebSocket 활성화 *@EnableWebSocket을 사용하면 WebSocket 관련 빈들이 자동으로 등록됨. *WebSocketConfigurer을 i..

Backend/spring 2024.03.01

비밀번호 암호화/인증 (spring security 계정 생성)

암호화 사용자를 생성 할 때 DB에 암호화 하여 비밀번호 저장. @RequestMapping(value = "/passwordEncode", method = RequestMethod.POST) @ResponseBody public String passwordEncode(@RequestBody String password, HttpServletRequest request) { BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(10); String hashedPassword = passwordEncoder.encode(password); return hashedPassword; } 인증 passwordEncoder.matches(presen..

Backend/spring 2023.11.06

[spring security] 3. UserDetailsService, UserDetails

UserDetailsService, UserDetails는 유저 정보를 가져와 비교하기 위해 쓰이는 인터페이스입니다. 1. UserDetailsService UserDetailsService는 Spring Security가 사용자 정보를 가져오는 역할을 담당하는 인터페이스입니다. 보통 사용자 정보는 데이터베이스나 외부 인증 소스에서 가져오는데, UserDetailsService 인터페이스 구현 시 오버라이드 되는 loadUserByUsername 메서드는 사용자 이름을 기반으로 사용자 정보를 조회하는 역할을 합니다. public interface UserDetailsService { UserDetails loadUserByUsername(String username) throws UsernameNotFo..

Backend/spring 2023.08.29

[spring security] 2. configure 작성

configure 작성 스프링 시큐리티 구성 파일을 나타내며 다음과 같은 기능을 수행합니다: PasswordEncoder 빈 설정 비밀번호 인코딩을 위한 BCryptPasswordEncoder를 빈으로 등록합니다. CorsConfigurationSource 빈 설정 CORS(Cross-Origin Resource Sharing) 설정을 구성하여 특정 출처로부터의 요청을 허용합니다. SecurityFilterConfig 클래스: SecurityConfigurerAdapter를 상속받아 커스텀한 보안 필터 설정을 구성합니다. configure(HttpSecurity http) 메서드에서 보안 관련 설정을 수행합니다. CSRF 보호를 비활성화하고, CORS 설정을 적용합니다. 특정 URL 패턴에 대한 접근 권..

Backend/spring 2023.08.27

[spring security] 1. 의존성 추가, 기본 로그인 페이지

스프링 시큐리티는 인증 (Authentication) ,권한(Authorize) 부여 및 보호 기능을 제공하는 프레임워크다. 인증(Authentication) , 인가(Authorization) 인증: 해당 사용자가 본인이 맞는지를 확인하는 절차. 인가: 인증된 사용자가 요청된 자원에 접근가능한가를 결정하는 절차 1. 의존성 추가 build.gradle 2. 기본 로그인 페이지 지정하지 않으면 기본 아이디는 user이고 비밀번호는 스프링부트를 실행할 때 마다 자동으로 생성되어 터미널에 나온다. 3. name, password 지정 application.properties에 아래와 같이 username, password를 지정할 수 있다. spring.security.user.name = 1234 spri..

Backend/spring 2023.08.20

spring boot 개발환경 설정(spring initializr)

프로젝트 기본 구조를 생성할 때 spring initializr를 이용한다. 1. Extension 설치 2. Command Palette에 Spring Initialzr을 입력 *ctrl + shift + p 를 누르고면 Command Palette가 나옵니다. 저는 gradle 프로젝트를 생성했습니다!! 위의 명령어 입력후 아래 기본 정보를 순서대로 선택하게 되어있는데 프로젝트 언어 말고는 전부 그냥 엔터쳤습니다. dependency도 뭐가 필요한지 잘 몰라서 lombok만 미리 추가했습니다. 스프링 부트 버전 프로젝트 언어 (JAVA선택) 그룹 ID Artifact ID 패키지 타입 자바버전 Dependency 3. 기본 구조 생성 완료 Artifact ID는 demo라는 폴더명 이였네요ㅎㅎ

Backend/spring 2023.08.18

[spring] @RequestParam @RequestBody 차이점

@RequestParam과 @RequestBody는 Spring Framework에서 요청 파라미터를 받는 데 사용되는 어노테이션입니다. @RequestParam 사용법: @RequestParam("paramName") 역할: URL 매개변수를 받아올 때 사용합니다. 예를 들어, ?paramName=value 형태의 URL 매개변수에서 paramName에 해당하는 값을 받아올 수 있습니다. 기본적으로는 요청의 쿼리스트링(또는 폼 데이터)에서 해당 매개변수를 찾아 값을 바인딩합니다. required 옵션을 사용하여 필수 매개변수 여부를 지정할 수 있습니다. 기본적으로는 단일 값을 받지만, List나 배열을 사용하여 여러 값을 받을 수도 있습니다. @RequestBody 사용법: @RequestBody 역할..

Backend/spring 2023.05.25

spring bean 주입 방법

스프링 프레임워크에서 의존성을 주입하는 방법은 3가지가 있습니다.Constructor Injection (생성자 주입) -> 권장Setter Injection (세터 주입)Field Injection (필드 주입)종류1.Constructor Injection (생성자 주입)클래스의 생성자를 통해 의존성을 주입합니다. 클래스에 필요한 의존성을 생성자 매개변수로 선언하고, Spring은 해당 매개변수에 맞는 Bean을 찾아 주입합니다.주입되는 Bean은 XML 또는 Java Config와 같은 설정 파일에서 정의됩니다.객체가 생성될 때 한 번만 호출됩니다. 즉, 객체가 처음 만들어질 때 필드 값을 초기화합니다.public class MyClass { private MyDependency myDepend..

Backend/spring 2023.05.10

@RequestMapping @PostMapping @GetMapping 차이

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping 어노테이션은 스프링 4.3부터 등장 기존의 RequetMapping과의 차이는? 1. 코드의 간소화 method부분 생략가능. requestMapping도 method를 생략하여 쓸 수 있고 생략하면 get, post방식을 둘다 처리해줌 2. url의 중복사용 url로 (방식이 다른)여러개 매핑이 가능 @RequestMapping 방식 @RequestMapping(value = "/url}", method = RequestMethod.GET) @PostMapping @GetMapping @getMapping("/url") @PostMapping("/url") 구글링해봤을 때 아래 ..

Backend/spring 2022.10.09

spring logback

Spring이나 일반 java 프로그램의 경우 logback.xml 파일을 resources 디렉터리에 만들어서 참조하지만 Spring Boot의 경우에는 아래 3가지 중 한 가지 방법을 선택합니다. application.properties에 설정 resources/logback-spring.xml에 설정 resources/logback.xml에 설정 //logback-spring.xml UTF-8 %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [%logger{36}:%line] - %msg%n ${LOGS_PATH}/PROJECT_NAME.log UTF-8 %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [%logger{36}:%..

Backend/spring 2022.06.10