Programming

Programming/Java

[Java] 문자열(String) 클래스

C언어에서는 문자열을 char형 배열로 표현하지만 자바에서는 String 이라는 클래스를 별도로 제공하며String 클래스에는 문자열과 관련된 작업을 할 때 유용하게 사용할 수 있는 다양한 메소드가 포함되어 있다.String 클래스는 java.lang 패키지에 포함되어 제공된다. String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고 변경할 수 없다.이러한 객체를 자바에서는 불변객체(Immutable Object)라 한다.더보기더보기ex) 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 수행하면 기존의 문자열의 내용이 변경되는 것이 아닌 내용이 합쳐진 새로운 String 인스턴스가 생성된다. 메소드 정리charAt()해당 문자열의 특정 인덱스에 해당하는 문자를 반환한다.만약 해당 문자열의..

Programming/Java

[Java] 상속

상속(Inheritance)이란 ?기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.이때, 기존에 정의되어 있던 클래스를 부모 클래스 혹은 상위, 기초 클래스라고도 하며상속을 통해 새롭게 작성되는 클래스를 자식 클래스 혹은 하위, 파생 클래스라고도 한다. 자바의 상속 방법자바에서의 상속은 extends라는 키워드를 통해 사용할 수 있다.부모 클래스를 정의하고 상속 받을 자식 클래스 뒤에 extends 키워드와 함께 부모 클래스를 적어주면 된다.// 부모 클래스class Parent { }// 자식클래스class Child extends Parent () 상속의 장단점장점기존에 작성된 클래스를 재활용할 수 있다.자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성..

Programming/Spring

[Spring MVC] API 계층

Controller 클래스 설계 및 구조 생성 API 계층은 클라이언트의 요청을 직접적으로 전달받는 계층 패키지 구조 생성 Spring Boot 기반 애플리케이션에서 주로 사용되는 Java 패키지 구조는 "기능 기반 패키지 구조"와 "계층 기반 패키지 구조" 2가지로 나뉜다. 기능 기반 패키지 구조(package-by-feature) 말 그대로 패키지를 애플리케이션에서 구현해야 하는 기능을 기준으로 패키지를 구성 기능 기반으로 나누어진 패키지 안에는 하나의 기능을 완성하기 위한 계층별(API계층, 서비스 계층, 데이터 액세스 계층) 클래스들이 모여있음. 계층 기반 패키지 구조(package-by-layer) 패키지를 하나의 계층(Layer)으로 보고 클래스들을 계층별로 묶어서 관리하는 구조 어떤 유형의 ..

Programming/Spring

[Spring Security] 권한 부여 처리 흐름

더보기 Authorization(인가, 권한 부여) 인증(Authentication) 과정이 정상적으로 수행된 사용자에게 하나 이상의 권한(Authority)을 부여하여 특정 애플리케이션의 특정 자원(Resource)에 접근할 수 있게 허가 하는 과정 Authorization은 반드시 인증 과정 이후 수행되어야 하며 권한은 일반적으로 역할(Role)의 형태로 부여 된다. Spring Security 권한 부여 처리 흐름 Spring Security 컴포넌트로 보는 권한 부여 처리 흐름 AuthorizationFilter는 SecurityContextHolder로부터 Authentication을 획득한다. SecurityContextHolder로부터 획득한 Suppier과 HttpServletRequest..

Programming/Spring

[Spring] Controller, Service, Repository

Controller Spring MVC 아키텍처에서 사용자의 요청을 처리하고, 애플리케이션의 흐름을 관리하는 역할 주요 역할 사용자의 요청 처리: 사용자가 애플리케이션에 요청한 내용을 수신하고, 해당 요청을 처리한다. 사용자가 웹 브라우저를 통해 HTTP 요청을 보낼 경우, Controller는 해당 요청을 수신하여 적절한 액션을 수행한다. 비즈니스 로직 호출: 비즈니스 로직을 처리하기 위해 Service 클래스나 다른 Model 계층의 컴포넌트를 호출한다. 사용자의 요청에 따라 필요한 데이터를 가져오고, 비즈니스 로직을 수행하여 결과를 생성한다. 뷰에게 모델 데이터 전달: 비즈니스 로직을 수행한 결과를 View에 전달하기 위해 모델 데이터를 생성하며 이를 통해 View는 사용자에게 데이터를 표시할 수 ..

Programming/Spring

[Spring] POJO(Plain Old Java Object)

POJO는 Spring에서 사용하는 핵심 개념들(IoC/DI, AOP, PSA)을 통해 달성할 수 있음을 의미한다. Spring은 POJO프로그래밍을 지향하는 Framework로 최대한 다른 환경이나 기술에 종속적이지 않도록 하기 위한 POJO 프로그래밍 코드를 작성하기 위해 Spring에서는 세 가지 기술을 지원하는데 그 세 가지 기술이 IoC/DI, AOP, PSA이다. POJO 배경 Spring Framework를 사용하기 전에는 원하는 특정 기술이 있다면 해당 기술을 직접적으로 사용하는 객체를 만들어 사용했는데 프로젝트가 규모가 커지고 필요한 기술들이 늘어나면서 특정 기술과 환경에 종속되는 경우가 빈번하게 발생하였다. 또한, 작성된 코드의 유지/보수가 어렵고 Java에서 상속의 특성상 이미 특정 ..

Programming/Java

[Java] 변수의 타입을 확인하는 방법

Generic을 공부하다가 문득 내가 선언한 변수의 타입이 궁금하여 타입을 콘솔에 출력하는 방법을 찾아보았다. 변수명.getClass().getName() example) public class CheckType { public static void main(String[] args) { Integer i = 123; Double d = 123.123; Character c = 'a'; String s = "asdf"; ArrayList arrayList = new ArrayList(); LinkedList linkedList = new LinkedList(); HashSet hashSet = new HashSet(); TreeSet treeSet = new TreeSet(); HashMap hashMa..

Programming/Java

열거 타입 (Enum)

열거 타입(Enum)? 서로 관련이 있는 상수 집합을 정의하는 자바에서 제공하는 열거형 타입 * 참고 상수는 대소문자로 모두 작성이 가능하지만, 관례적으로 대문자로 작성 장점 더보기 타입 안정성 컴파일 시점에 타입 검사를 받기 때문에 런타임 시점에 발생할 수 있는 오류를 사전에 방지할 수 있다. 가독성 이름을 사용하여 가치를 의미적으로 나타낼 수 있으므로 코드의 의도를 쉽게 파악할 수 있다. 유지보수성 상수가 변경될 때, 해당 값을 참조하는 모든 코드를 수정해야 하는 번거로움이 있다. 하지만 Enum을 사용하면 상수 값을 변경하는 것만으로 프로그램 전체에 해당 값을 참조하는 모든 코드가 변경된다. 코드 안전성 Enum은 상수를 캡슐화하기 때문에 상수가 의도치 않게 변경되는 것을 방지하며 싱글톤 디자인 패..

Programming/Java

[생활 코딩] JAVA1

https://opentutorials.org/course/1223 Java - 생활코딩 본 수업은 2013년에 제작된 수업으로 2019년에 제작된 JAVA1 수업으로 대체 되고 있습니다. 자바로 코딩에 입문하시려고 한다면 JAVA1 수업을 권해드립니다. 수업소개 본 모듈은 자바 언어에 대한 기 opentutorials.org 생활 코딩 - Java를 보고 정리한 글입니다. Java 언어 소개 Java는 1995년 제임스 고슬링과 그의 동료들에 의해 시작된 프로젝트입니다. 원래 가전제품을 제어하기 위한 언어로 고안되었지만 웹의 등장으로 엄청난 성공을 거두며 주류 언어가 되었습니다. Java 프로그램의 동작 코드(Code, Source) 작성 컴퓨터가 실행할 수 있는 형태로 코드를 컴파일 컴파일된 프로그램..

Programming/Java

[Java] 문자열 비교 ==, equals()

공통점 ==와 equals()은 기본적으로 문자열을 비교하여 boolean 타입으로 반환한다는 공통점이 있습니다. 차이점 ==연산자는 비교하고자 하는 두 개의 대상의 주소값을 비교하는 반면 equals() 메서드는 비교하고자 하는 두 개의 대상의 값 자체를 비교합니다. example 실행 결과

Smile :DK
'Programming' 카테고리의 글 목록