분류 전체보기 136

[SpringFramework] Spring Container, Java Bean vs. POJO vs. Spring Bean

Spring Container, Java Bean vs. POJO vs.  Spring BeanSpring의 주요 개념을 살펴보도록 하겠습니다.1. Spring Container란? (Spring Context란?)(Spring, Spring Container, Spring IOC Container, Spring Context를 혼용하기도 합니다)Spring Container는 Spring Bean과 Spring Bean의 lifecycle(생명주기)을 관리합니다  앞서 여러 Java 클래스와 설정 파일을 만들었습니다.그리고 만든 것들을 Spring Container에 input으로 전달했습니다. POJOs : Person, Address(Plain Old Java Object, Java Class, ..

Java 2023.11.26

[SpringFramework] Spring Bean 생성, 확인, 의존성 주입

Spring이 Bean을 자동으로 생성하고 관리하도록 하면,프로젝트의 규모가 크더라도 손쉽게 관리할 수 있습니다.Java Spring Bean을 만들고 자동 연결하기SpringFramework를 활용하기 위한 설정을 하겠습니다.1. SpringContext 실행하기JVM 내에 SpringContext를 만들기 위해AnnotationConfig 클래스를 사용하여 AnnotationConfigApplicationContext를 만들기 위해설정(@Configuration) 클래스를 사용합니다.(@Configuration클래스로 SpringContext를 실행합니다)public class AppHelloWorldSpring { public static void main(String[] args) { va..

Java 2023.11.26

[SpringFramework] Coupling, 강한 결합과 느슨한 결합

강한 결합과 느슨한 결합0. 결합(Coupling)이란? 무언가를 변경하는 데 얼마나 많은 작업이 관련되어 있는지에 대한 것입니다. 결합은 일상생활에서 찾아볼 수 있습니다.더보기자동차를 예시로 들어보겠습니다.자동차의 구성 요소들을 생각하면엔진, 타이어, 핸들, 전면 유리,  키, 내비게이션, 블랙박스, 엔진 오일, 워셔액 등이 있습니다.이 중에 엔진은 자동차에 (강하게) 결합되어 있습니다, 엔진을 교체하는 작업은 상당히 번거롭습니다.타이어는 어떤가요? 타이어를 교체하는 것이 번거로울 수 있지만, 엔진에 비해 상대적으로 수월합니다.워셔액은 또 어떻죠? 누구나 보충할 수 있습니다. 이는 느슨한 결합이라고 볼 수 있습니다. 데스크톱과 노트북을 예시로 들어보겠습니다.집에 설치된 노트북과 데스크톱을 사용하는 데 ..

Java 2023.11.26

[SpringFramework] 스프링프로젝트 생성(spring.io, InteliJ), 클래스 생성

스프링프로젝트 생성(spring.io, InteliJ), 클래스 생성0. 앞서스프링 프레임워크에 대해 학습하기 위해스프링 프로젝트를 생성합니다.1. 프로젝트 생성하기 - spring.io더보기start.spring.io에 접속하여스프링 프로젝트를 생성합니다설정은 다음과 같습니다. - Maven- 3.2.0 (3.x.x)- Java 17- Jar 설정을 완료했으면 GENERATE 버튼을 클릭하여다운로드합니다.2. 프로젝트 열기 - InteliJ더보기인텔리제이에서 프로젝트를 열 수 있습니다.   기존에 수정하고 있던 프로젝트가 없다면 사진 3처럼,   수정하고 있던 프로젝트가 있다면 사진 4처럼 진행하고,    사진 5에서 Trust Project를 클릭하여최종적으로 프로젝트를 열 수 있습니다.3. 클래스 ..

Java 2023.11.25

Redis(Remote Dictionary Server) 란?

1. Redis 란? Remote Dictionary Server를 나타내는 용어입니다. 빠른 오픈 소스 인 메모리 키 값 데이터 스토어 입니다. db, cache 등으로 사용되고 있습니다. 1 밀리초 미만의 응답시간을 제공하여 초당 수백만 건의 요청을 지원할 수 있습니다. 2. 이점 1. 성능 모든 Redis(Remote Dictionary Server) 데이터는 메모리에 상주하므로 데이터 액세스의 대기 시간을 낮추고 처리량을 높입니다. 기존 db와 달리, 인 메모리 데이터 스토어에는 디스크로의 이동이 필요하지 않기 때문에 엔진 대기 시간이 마이크로초 단위까지 줄어듭니다. 그 덕에 인 메모리 데이터 스토어는 더 많은 작업을 처리하고 더 빠른 응답 시간을 지원할 수 있습니다. 따라서 평균 읽기 및 쓰기 ..

DBMS 2023.11.14

SpringSecurity 스프링 시큐리티 웹 애플리케이션에서 시작하기 가이드(공식문서)

SpringSecurity 시작하기 가이드(~15분) SpringSecurity에 대해 심도있게 알아보기 전, 스프링 공식문서의 빠르게 시작할 수 있는 가이드를 통해 SpringSecurity에 대해 대략적으로 파악해보려고 합니다. 예제에선 Thymeleaf 를 사용했지만, Thymeleaf를 사용하지 않을 수도 있기 때문에 Spring 부분만 참조하려고 합니다! 또한, SpringBoot를 사용한다고 가정하여 view controller의 설정 또한 생략하려고 합니다. 생략한 부분에 대해 자세히 알고 싶으시다면, 참조 부분의 공식문서 페이지를 확인해주세요 준비사항 15분 이내의 시간 IDE Java 17 Gradle 7.5+ or Maven 3.5+ 시작 1. SpringSecurity 의존성 추가 G..

Java 2023.10.31

OAuth 2.0 개요

들어가기 앞서 OAuth 2.0은 인가(Authorization)를 위한 표준 프로토콜입니다. 웹 애플리케이션, 데스크톱 애플리케이션, 휴대폰 및 디바이스에 대한 특정한 인가(Authorization)흐름을 제공하여 클라이언트 개발을 단순하게 해줍니다. OAuth 2.0 Authorization 프레임워크를 통해 제3자가 리소스 소유자(HTTP 서비스 사용자)와 서비스 사이에서 상호작용을 하거나, (제3자가) 스스로 권한을 획득하는 방법 등을 통해 액세스 권한을 획득하고, HTTP 서비스에 대하여 액세스할 수 있습니다. 0. 개요 전통적인 클라이언트-서버 인증(Authentication) 모델에서 클라이언트는 서버에서 보호중인(인가된 사용자만 접근가능한) 자원에 액세스를 요청하기 위해 리소스 소유자의 자..

Dictionary 2023.10.15

JSON Web Tokens, JWT란?

1. JSON 웹 토큰이란? 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 방법을 정의하는 개방형 표준(RFC7519)입니다. 전송하는 정보는 디지털 서명이 되어 있어(발신자 확인 및 정보 위변조 방지) 신뢰할 수 있습니다. HMAC 알고리즘 또는 RSA 및 ECDSA 를 사용하는 비대칭 암호화 방식(공개/개인 키 쌍)을 사용하여 서명할 수 있습니다. 서명된 토큰을 사용하여 전송하는 정보를 숨기고, 비대칭 키를 통해 개인 키를 가지고 있는 사람만 인증합니다. 정보 전송을 위한 방법 중 하나로, 암호화를 통해 서명하여 신뢰도가 높습니다. 인증을 통해 토큰을 발급하고, 토큰에 권한을 부여하여 사용할 수 있습니다. 2. 사용 예시 액세스 승인과 정보 교환에 사용할 수 있습니다. 1. 액세스 승인 ..

Dictionary 2023.10.14

클라우드의 서비스 제공 형태 XaaS, SaaS, PaaS, IaaS

클라우드 서비스는 다양한 도구와 기술을 사용자에게 서비스 형태로 제공합니다. (애플리케이션, 플랫폼, 인프라, 보안, 운송 등 아주 다양합니다) 컴퓨팅 액세스와 원격 액세스를 통해 모든 것이 서비스로 제공될 수 있습니다. as a Service aaS 서비스형이라는 용어는 제3사에서 클라우드 컴퓨팅 서비스를 제공한다는 의미입니다. 따라서 사용자는 코드, 고객 관리와 같은 더 중요한 업무에 집중할 수 있습니다. 각 유형의 클라우드 컴퓨팅을 활용하면 관리해야할 온프레미스 인프라가 감소합니다. 기존에는 온프레미스환경에서 IT자산을 설치, 관리 및 유지보수하는 방식을 사용했습니다. 클라우드 컴퓨팅은 클라우드 서비스 제공자(제3사)가 IT자산을 소유, 관리 및 유지보수하고, 고객이 인터넷 연결을 통해 이를 소비하..

Dictionary 2023.09.26

CI/CD 란?

개발은 변경사항을 통합하고, 테스트, 릴리스하는 단계를 거칩니다.그 과정에서, 코드를 자주 커밋하여 통합하면피드백을 자주할 수 있으며 높은 성과로 이어질 수 있습니다.성과가 높은 팀은 성과가 낮은 팀보다 417배 더 많이 배포합니다.- DevOps 현황 보고서 (2022) 그러나 "커밋 - 배포 - 테스트"과정을 수작업으로 처리한다면보다 많은 시간과 자원이 소모될 수 있습니다. 이를 자동화하여짧은 주기로 배포할 수 있는 방법이 있습니다.CI/CD 입니다.CI1. CI(Continuous Integration, 지속적인 통합)이란?(CI/CD 파이프라인을 구현하기 위한 첫 번째 단계입니다)동일한 프로젝트에서 작업하는 모든 사람이 정기적으로 코드 베이스의 변경 사항을 중앙 저장소에 병합하도록 하는 방식입니다..

Dictionary 2023.09.23
728x90
반응형