목록개발새발/스프링부트3 백엔드 개발자 되기 (11)
JaPark Bug World
8.1 스프링 시큐리티스프링 시큐리티(Spring Security)는 스프링 기반의 애플리케이션 보안(인증, 인가)를 담당하는 스프링 하위 프레임워크이다. 인증과 인가인증(authentication)은 사용자의 신원을 입증하는 과정이며, 사용자가 사이트에 로그인을 할 때 누구인지 확인하는 과정이다. 인가(authorization)는 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업이다. 관리자는 관리자 페이지에 들어갈 수 있지만 일반 사용자는 관리자 페이지에 들어갈 수 없다. 이런 권한을 확인하는 과정을인가라고 한다. 스프링 시큐리티스프링 시큐리티는 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다. 보안 관련 옵션을 설정하고 애너테이션으로 설정도 매우 간단하며..
7.1 사전지식 : 타임리프 타임리프는 템플릿 엔진이다. 템플릿 엔진은 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, 즉 HTML 상에 그 데이터를 넣어 보여주는 도구이다. 다만 HTML과 함께 템플릿 엔진을 위한 문법을 살짝 섞어서 사용해야 한다. 템플릿 엔진 개념 잡기 // 간단한 탬플릿 문법을 위한 예 // 서버에서 보내준 데이터 예 { 이름: "홍길동" 나이: 11 } 값이 달라지면 그때 그때 화면에 반영하니 동적인 웹 페이지를 만들 수 있게 된다. 템플릿 엔진은 각각 문법이 미묘하게 달라서 템플릿 엔진마다 문법을 새로 배워야 한다. 대부분 구조는 비슷하며, 스프링은 타임리프를 권장하고 있다. 타임리프 표현식과 문법 표현식 설명 ${...} 변수의 값 표현식 #{...} 속성 파일 값 표..
6.1 사전 지식 : API와 REST API네트워크에서 API(Applicaton Programming Interface)는 프로그램 간에 상호작용하기 위한 매개체를 말한다. 클라이언트의 요청을 서버에 전달하고, 서버의 결과물을 클라이언트에게 전달한다.
5.5 예제 코드 살펴보기 @Getter @Entity // 1) 엔티티로 지정 @NoArgsConstructor(access = AccessLevel.PROTECTED) // 2) 기본 생성자 @AllArgsConstructor public class Member { @Id // 3) id 필드를 기본키로 지정 @GeneratedValue(strategy = GenerationType.IDENTITY) // 4) 기본키를 자동으로 1씩 증가 @Column(name = "id", updatable = false) private Long id; // DB TABLE 'id' column matching @Column(name = "name", nullable = false) // 5) name 이라는 no..
5.2 ORM이란? object-relational mapping은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법이다. 보통은 SQL이라는 언어로 데이터베이스에 있는 값을 꺼내는 방식을 사용한다. 하지만 ORM이 있다면 데이터베이스의 값을 마치 객체처럼 사용할 수 있다. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 해주는 도구라고 할 수 있다. ORM의 장점과단점 장점 SQL을 직접 작성하지 않고 사용하는 언어로 데이터베이스에 접근 가능 객체지향적으로 코드를 작성 할 수 있으므로 비즈니스 로직에만 집중 가능 데이터베이스 시스템이 추상화되어 있기 때문에 MySQL에서 PostgreSQL로 전환한다고 해도 추가로 드는 작업이 거의 없다. 매핑하는 정보가 명확하기 때문에..
4.1 테스트 코드 개념 익히기 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드이다. 안드로이드 개발을 하면서도 유닛 테스트가 있었지만 사용을 하지 않았다. 확인이 필요한 액티비티 또는 프래그먼트 화면단을 바로 start intent 시켜서 확인하거나 그랬는데, 이것도 앞에 진행해야 할 로직이 있다면 더미데이터로 세팅을 다 해놓거나 하는 번거로움이 크긴 했다. 이번기회에 배워보겠다............ 테스트 코드란? 테스트 코드에도 다양한 패턴이 존재하지만 given-when-then 패턴에 대해 알아본다. given 테스트 실행을 준비하는 단계 when 테스트를 진행하는 단계 then 테스트 결과를 검증하는 단계 4.2 스프링부트3와 테스트 스프링부트는 애..
3.1 스프링부트 3 구조 살펴보기 스프링 부트는 각 계층이 양 옆의 계층과 통신하는 구조를 따른다. (자세한 내용은 교재 79p 참조) 계층이라는 것은 각자의 역할과 책임이 있는 어떤 소프트웨어의 구성 요소를 의미한다. 각 계층은 소통할 수 있지만 다른 계층에 직접 간섭하거나 영향을 미치지 않는다. 프레젠테이션 계층 (Controller) HTTP 요청을 받고 이 요청을 비즈니스 계청으로 전송하는 역할이다. 컨트롤러는 스프링 부트 내에 여러 개가 있을 수 있다. 비즈니스 계층 (Service) 모든 비즈니스 로직을 처리한다. 서비스를 만들기 위한 로직이며, 웹 사이트에서 벌어지는 모든 작업, 발생하는 예외 등 프로세스를 구현하기 위한 로직 등. 퍼시스턴스 계층(Repository) 모든 데이터베이스 관..
@SpringBootApplication 이해하기 @SpringBootApplication public class SpringBootDeveloperApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDeveloperApplication.class, args); } } 이 클래스는 자바에의 main() 메서드와 같은 역할이다. 여기서 스프링 부트가 시작이 된다. @SpringBootApplication 애너테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해준다. SpringApplication.run() 메서드는 애플리케이션을 실행한다. 첫번째 인수는 스프링 부트3 애플리케이션의 메인 클래스로..
스프링 부트 스타터 살펴보기 스프링 부트 스타터는 의존성이 모여 있는 그룹이다. 스타터를 사용하면 필요한 기능을 간편하게 설정할 수 있다. 스타터는 spring-boot-starter-{작업유형} 이라는 명명규칙이 있다. 스타터 설명 spring-boot-starter-web Spring MVC를 사용해서 RESTful 웹 서비스를 개발 할 때 필요한 의존성 모음 spring-boot-starter-test 스프링 애플리케이션을 테스트하기 위해 필요한 의존성 모음 spring-boot-starter-validation 유효성 검사를 위해 필요한 의존성 모음 spring-boot-starter-actuator 모니터링을 애플리케이션에서 제공하는 다양한 정보를 제공하기 쉽게 하는 의존성 모음 spring-b..
2.1 스프링과 스프링 부트 스프링의 등장 엔터프라이즈 애플리케이션은 대규모의 복잡한 데이터를 관리하는 애플리케이션을 의미한다. 소프트웨어 분야가 발전하면 엔터프라이즈 애플리케이션은 점점 복잡해졌다. 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성, 보안이 매우 중요하다. 이런 것들을 신경쓰면서 비즈니스 로직까지 개발하기가 매우 어려워 개발에만 집중 할 수 있도록 2003년 6월 스프링 프레임워크가 등장했다. 스프링 프레임워크는 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구이다. 스프링을 더 쉽게 만들어 주는 스프링 부트 스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있다. 이러한 단점을 보완하기 위해 스플이 부트를 출시 했다. (2013년 4월) 스..