자바

자바

[Java] 자바 빌드

빌드 소스코드를 실행가능한 독립적인 소프트웨어 산출물로 만드는 과정으로 코드를 서버에 올릴 수 있는 상태로 만드는 것 빌드과정 컴파일 : 소스코드(.java)를 바이너리 코드(.class)로 변환 링크 : 클래스 파일들끼리 연결(외부 라이브러리 포함) 패키징 : 연결된 클래스 및 리소스 파일 연결 테스트 : 기능 테스트 빌드 결과 JAR(Java Archive) : 자바애플리케이션 압축 양식, 클래스와 리소스로 구성 WAR(Web Archive) : 웹 애플리케이션 압축 양식 원래 웹 기능이 들어간 자바 애플리케이션은 WAR로 빌드해야하지만 스프링부트는 내장 톰캣을 통해 JAR로 빌드할 수 있게한다. 빌드툴 소스코드의 빌드 과정을 자동으로 처리해주며 외부 라이브러리 의존성 추가 및 관리를 해주는 프로그램..

자바

비즈니스 로직

현실세계에서 발생하는 사건 중 SW 서비스를 통해 해결할 문제의 영역을 도메인, 비즈니스라고 한다. 따라서 비즈니스 로직은 현실세계의 문제를 해결하는 로직이 담긴 코드를 의미한다. 비즈니스 로직을 제외한 모든 코드는 비즈니스 로직을 SW에 적용하기 위한 애플리케이션 서비스 로직이라 한다. 웹 프로그래밍의 기초인 커뮤니티, 게시판 도메인을 예로 든다면 비즈니스 로직 글의 CRUD, 회원가입, 로그인 애플리케이션 서비스 로직 클라이언트와 웹 통신을 위한 컨트롤러, 도메인 비즈니스 로직의 호출을 위한 서비스, 서버와 DB를 연결해주는 레포지토리 관점의 분리 둘을 구분하는 이유는 스프링의 삼대 요소 중 하나인 관점의 분리를 위해서이다. 비즈니스 로직과 애플리케이션 서비스 로직을 나눠 응집도를 높히고 결합도를 낮..

자바

[Java] 오버라이딩이란?

오버라이딩이란? 상위 클래스에서 이미 정의된 메소드를 상속받는 하위 클래스에 맞춰서 메소드 오버라이딩을 통해 재정의하는 것 오버라이딩 시에 @Override 어노테이션 필수인가? 메소드 오버라이딩은 동적 할당으로 런타임시에 실행되는데 @Override 어노테이션을 오버라이딩 하는 메소드에 붙여주면 컴파일 시점에 상위클래스가 해당 메서드명을 갖고 있는지, 파라미터는 동일한지를 체크해줄 수 있다. class People{ public void sayMe(){ System.out.println("난 사람"); } } class Chulsu extend Poeple{ public void sayMee(){ // 메소드 오버라이딩 안되지만, 컴파일 시점에 체크하기 어려움 System.out.println("난 철..

스프링

Spring Security의 구조, 인증 인가 처리과정

스프링 시큐리티는 스프링 기반의 애플리케이션에서 인증과 권한을 통해 접근을 필터로 제어하는 프레임워크로 개발자가 보안 관련 로직을 일일히 작성하지 않아도 된다는 장점이 있다. 인증, 인가? 인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정 인가(Authorization) : 해당 사용자가 요청하는 자원을 실행할 수 있는 권한이 있는가 확인하는 과정 인증을 로그인을, 인가는 로그인이 필요한 서비스에 접근하는 것이라고 보면 된다. Spring Security에서는 인증, 인가를 위해 Principal을 아이디로, Credential을 비밀번호로 사용하는 Credential 기반의 인증 방식을 사용한다. Principal(접근 주체) : 보호받는 리소스에 접근하는 대상 Crede..

스프링

[Spring] 스프링 MVC

MVC? MVC(Model - View - Controller)는 소프트웨어 공학에서 사용되는 디자인패턴이고, 스프링에서도 이를 웹 모듈로 지원한다. Model 모델은 애플리케이션의 정보나 데이터 등 뷰가 필요한 데이터를 담는다. View 뷰는 사용자에게 보여지는 화면을 모델의 데이터를 사용해 렌더링한다. Controller 컨트롤러는 요청을 위임해서 비즈니스 로직과 데이터를 모델에 담아 뷰로 넘겨준다. 뷰와 모델은 서로는 모르지만 양쪽을 둘다 아는 컨트롤러는 통해 소통하며, 데이터와 비즈니스 로직 사이의 동작을 관리하고, View 와 Model은 서로 직접 소통이 아닌 Controller를 통해 소통한다. Spring Web MVC 구조 DispatcherServlet? Client에서 WAS를 통해 ..

자바

[Java] 자바의 직렬화, 역직렬화

프로젝트를 진행하며 자바와 외부 API의 소통을 하려면 자바에서 사용하는 객체를 전송하는게 아닌 API서버에서 원하는 정보를 보내줘야한다. 그러면 객체를 자바 외부로 전송하려면 어떻게 해야할까? Java I/O처리는 정수, 문자열, 바이트 단위의 처리만 지원하기 때문에 복잡한 객체의 내용을 네트워크 상으로 전송하기 위해서는 변환처리가 필요한데(Object - > byte) 이를 직렬화라고 한다. 역직렬화는 변환된 바이트 형태를 다시 객체로 변환 시키는 것이다. 시스템 적으로 본다면 JVM의 힙, 스택 메모리에 있는 클래스 인스턴스를 바이트 형태로 변환하는 것이 직렬화이고, 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM에 올리는 것을 역직렬화라고 한다. 자바 직렬화의 조건 Primitive 타입이..

개발로그

[Spring Boot JPA 커뮤니티] 회원 가입 유효성 검사, 중복 검사, 로그인 오류 예외 처리 구현

그동안 아무런 예외 처리를 하지 않고 컨트롤러에서 받아 서비스로 넘겨서 Entity에 지정한 옵션들과 일치하지 않으면 수많은 하얀 페이지를 만났다. 다른 템플릿 엔진은 예외처리를 할 클래스를 만들어서 View에서 처리해줘야하는 것 같은데 타임리프는 BindingResult를 모델로 넘겨 사용할 수 있고 시큐리티와 연동되는 부분도 많아서 꽤 간단한 편이였던것 같다. 이번 포스트는 회원가입, 로그인부터 살펴보고 다음 포스트는 서비스에서 터지는 예외처리로 넘어가겠다. 회원가입 User Entity @Entity @Getter @NoArgsConstructor public class User extends TimeEntity { @Id @GeneratedValue(strategy = GenerationType...

자바

[Java] 리플렉션 API

공부한 내용 정리한 포스팅입니다. 틀린내용 피드백 언제든 부탁드립니다. 리플렉션 API? 요약하자면 1. 실행중인 자바 프로그램이 자체적으로 검사하거나 프로그램 내부의 속성을 조작할 수 있기 해주는 API 2. 리플렉션을 사용하면 동적으로 로드되는 Class의 속성을 가져와서 사용한다. 3. 다른 언어에 없는 기능이다. Class Class 1. Class의 인스턴스는 실행중인 Java 애플리케이션의 클래스 및 인터페이스를 나타낸다. 2. 생성자는 없지만 클래스가 로드되고 define Class Loade의 메소드 호출에 따라 JVM에 의해 자동으로 생성된다. 런타임에서 활용할수 있는 방법은 세가지다. 1. 클래스.class 2. Class.forname(className, true, currentLoa..

비오베베
'자바' 태그의 글 목록