일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링부트
- Exception in thread "main" java.lang.Error
- SOP
- .NET 8.0
- SSMS
- SQL Server 구성 관리자
- cors
- git
- SQL Server
- JavaScript
- Newtonsoft.Json
- 데이터베이스
- ORM
- 자바
- IT
- 권한
- springboot
- MSSQL
- ERROR_MESSAGE
- 스프링 시큐리티
- OUT 파라미터
- java
- RAISERRR
- DB
- C#
- 프로시저
- IT story
- System.Text.Json
- github
- jpa
- Today
- Total
목록분류 전체보기 (45)
its_jh_stroy

Spring Security에 대해 공식 문서에서는 아래와 같이 정의한다.Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. 커스터마이징이 가능한 인증과 접근 제어를 제공하는 사실상 표준이라고 되어있다.인증이란 사용자가 누구인지 확인하는 것이고, 접근 제어는 권한 부여(authorization)를 의미한다.인증과 권한 부여를 조금 더 쉽게 구현할 수 있도록 도와주는 것이다. Spring Security를 이용한 로그인 인증 구현하기로그인을 구현하는 방식은 대표적..
vsCode로 자바 프로젝트를 만들고, App.java 파일을 실행해 보았더니 아래와 같이 오류가 발생했다. Error: Could not find or load main class java.test.App Caused by: java.lang.ClassNotFoundException: java.test.App 진짜 아무것도 안 했는데 오류가 발생해서 많이 당황했다. 패키지 변경하기알고 보니 이유는 패키지 이름의 문제였다. "java"로 시작하는 패키지는 JDK에서 사용하는 내장 패키지이므로, 사용자가 직접 "java"로 시작하는 패키지를 생성할 경우 발생하는 오류이다. 따라서 문제가 되는 App.java 위치를 옮겨 패키지를 변경해 주었다.// 패키지 이름 수정 // package java.test; ..
스프링부트에서 thymeleaf 라이브러리는 웹사이트의 공통된 부분을 하나씩 작성하지 않고, 템플릿 형태를 만들어 개발할 수 있는 기능을 지원한다.몇 가지 속성을 통해 사이트의 공통 양식을 지정하여 효율적인 화면 개발을 할 수 있다.페이지는 아래와 같이 templates 폴더에 네 가지 html 파일을 구성할 것이다.- layoutPage.html - content.html- fragments/header.html- fragments/footer.html 의존성 추가시작 전 아래와 같이 build.gradle 파일에 의존성을 추가한다.implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'implementation 'nz.net.ul..
REST API 서버에서 예외 한 번에 처리하기웹 개발에서 가장 기본적인 예외 처리 방식은 컨트롤러에 try~catch 문을 작성하여 예외를 처리하는 것이다.이러한 방식은 클래스 내 메서드가 많아질수록 중복된 코드도 많아지게 된다. 클래스 내부에서 예외를 한 번에 처리하기ExceptionHandler 어노테이션을 사용하면 예외를 한 번에 처리할 수 있다.@RestController@RequiredArgsConstructor public class ItemController { // ... @GetMapping("/list") String list(Model model) throws Exception { List result = itemRepository.findAll(); ..
MyBatisSQL 문과 객체를 매핑하여 관계형 데이터베이스를 쉽게 사용할 수 있도록 지원하는 프레임워크매퍼라는 파일을 통해 쿼리를 작성한다. 데이터베이스 구성하기먼저 데이터베이스에서 테이블을 구성할 것이다.mybatis에 집중할 수 있도록 최대한 간단하게 구성하였다.CREATE TABLE employee ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), salary INT); 프로젝트 구조 생성하기실습에 사용될 DTO, Controller, Service, Repository를 생성할 것이다.아래와 같은 이름으로 생성했고, 편의를 위해 동일한 경로에 생성하였다.- EmployeeDTO- EmployeeController- Emplo..
제어의 역전과 의존성 주입은 스프링의 핵심 개념이라고 할 수 있다.그리고 두 개념을 이해하기 위해서는 스프링 컨테이너와 빈이라는 개념에 대해 이해하고 있어야 한다. 스프링 컨테이너(DI 컨테이너)와 빈(Bean)스프링 프레임워크에서 별도로 관리하는 객체를 모아두는 곳을 스프링 컨테이너라고 한다.이렇게 관리되는 객체를 빈이라고 한다.필요한 경우, 개발자가 빈을 등록하거나 의존성 주입을 통해 빈을 주입받아 사용할 수 있다. 제어의 역전(Inversion of Control)객체를 직접 생성하는 것이 아니라, 외부(스프링 컨테이너)에서 관리하는 객체를 가져와 사용하는 것이다.빈을 제어하는 주체가 스프링 컨테이너에서 개발자로 뒤집혀서 제어의 역전이라 부른다. 의존성 주입(Dependency Injection)외..
String 타입의 불변성(Immutable)자바에서 문자열 타입의 변수는 안전성 및 효율성을 위해 값을 변경할 수 없도록 설계되었다.- 안정성 : 값을 조작할 수 없음- 효율성 : 문자열 상수 풀에 의해 동일한 문자열은 동일한 문자열 리터럴을 참조 아래와 같이 문자열을 변경하면 실제 값이 변경되는 게 아니라 새로운 값이 만들어져 변수에 대입되는 것이다.String str1 = "Hello World";str1 = "Hello Java"; StringBuffer와 StringBuilder문자열의 불변성 때문에 변경이 자주 발생하는 경우, 매번 새로운 String 객체가 만들어지고 기존 객체는 가비지 컬렉션 대상이 되어 성능 저하의 원인이 될 수 있다.이러한 문제 방지를 위해 나온 문자열 변경을 지원하는 ..
자바에서 날짜와 시간을 다루기 위해서 Calendar 클래스를 활용한다.기능 구현을 위해 해당 클래스를 가져온다.import java.util.Calendar; Calendar 인스턴스는 getInstance() 메서드를 통해 생성할 수 있다.Calendar calendar = Calendar.getInstance(); Calendar의 정적 필드로 YEAR, MONTH와 같은 상수가 있다.클래스를 자세히 살펴보면 아래와 같은 형태로 되어있다. // Calendar.classpublic static final int YEAR = 1;public static final int MONTH = 2;// ...public static final int DATE = 5; 위 필드는 날짜나 시간을 가져올 때 ..
== 연산자기본 타입의 경우 값을 비교하고 참조 타입은 메모리 위치 값을 비교한다. qeuals참조 타입에서 객체의 실제 값을 비교하기 위해 사용된다.하지만 오버라이드하지 않으면 객체의 참조 값을 비교하므로 값 비교를 위해 별도의 오버라이드가 필요하다.String 타입의 경우 미리 오버라이드 되어 제공된다. 문자열 상수 풀(String Constant Pool)과 new자바에서 문자열을 만드는 방법은 두 가지가 문자열 리터럴을 대입하는 방법과 new를 통해 생성하는 방법이 있다. 문자열 리터럴을 생성하여 변수를 생성하면 해당 리터럴은 힙 영역의 문자열 상수 풀이라는 공간에 저장된다.이후 같은 문자열로 변수를 생성하려고 하면 미리 저장된 풀의 문자열을 참조한다.이미 풀에 저장된 문자열 리터럴을 통해 변수를..
3-tier 아키텍처는 애플리케이션을 세 가지 계층으로 나누어 개발하는 방법이다.각 계층의 역할이 명확해져, 향상된 유지보수성과 확장성, 재사용성을 가진 프로그램이 된다. 프레젠테이션 계층(Presentation Layer, Controller)HTTP 요청을 받고, 관련된 서비스를 호출하여 비즈니스 계층으로 전달한다.컨트롤러가 프레젠테이션 계층에 속한다. 비즈니스 계층(Business Layer)비즈니스 로직을 처리한다.서비스 클래스가 비즈니스 계층 역할을 한다. 퍼시스턴스 계층(Persistence Layer)데이터베이스와 관련된 작업을 추상화하는 인터페이스이다. 퍼시스턴스 계층은 리포지토리라는 이름으로 작성한다.JPA를 사용하는 경우 스프링에서 자동으로 구현해주는 구현체를 ..