일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ./gr
- RESTfull API
- 스프링
- IPC
- 비즈니스 계층
- ./gradlew docker
- 로그인 인증 흐름
- 토큰기반 인증
- @temproal
- ORM
- 퍼시스턴스 계층
- 스프링부트 구조
- JPA
- java I/O
- 세션기반 인증
- 스프링부트 계층구조
- 동기
- http
- 스프링 부트 테스트
- Java
- 어노테이션
- 스프링부트
- 비동기
- MSA
- 작업명중복
- 로그인/로그아웃
- JWT
- 프레젠테이션 계층
- formmatted
- spring
- Today
- Total
목록분류 전체보기 (74)
[DEV] J-Jay
스프링 시큐리티 설정 build.gradle (의존성 추가) dependencies { //스프링 시큐리티를 사용하기 위한 스타터 의존성 implementation 'org.springframework.boot:spring-boot-starter-security' //타임리프에서 스프링 시큐리티를 사용하기 위한 의존성 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6' //스프링 시큐리티를 테스트하기 위한 의존성 testImplementation 'org.springframework.security:spring-security-test' } 스프링 시큐리티를 사용하기 위해 build.gradle파일에 의존성을 위와 같이 추가한다...
스프링 시큐리티(Spring Security) 스프링 시큐리티는 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다. 보안 관련 옵션을 제공하며, 어노테이션으로 설정하무로 매우 쉽게 사용할 수 있다. CSRF(Cross Site Request Forgery 사용자의 권한을 가지고 특정 동작을 수행하도록 유도하는 공격)이나, 세션 공격(Session Fixation 사용자의 인증 정보를 탈취하거나 변조하는 공격)을 방어해 주고 요청 헤더도 보안 처리를 해주므로 개발자가 보안 관련 개발을 해야하는 부담을 크게 줄여준다. 필터 기반으로 동작하는 스프링 시큐리티 스프링 시큐리티는 필터 기반으로 동작한다. 스프링 시큐리티는 위와 같이 다양한 필터들로 나누어져 있으며, 각 필터에서 인증,. 인가와..
인증(Authentication) 인증은 사용자의 신원을 입증하는 과정이다. 예를 들어 사용자가 사이트에 로그인을 할 떄 누구인지 확인하는 과정을 인증이라고 한다. 인가(Authorization) 인가는 인증과는 다르다. 인가는 사이트의 특정 부분에 접근할 수 있는지에 권한을 확인하느 작업니다. ㅇㅖ를 들어 관리자는 관리자 페이지에 들어갈 수 있지만 일반 사용자는 관리자 페이지에 들어갈 수 없다. 이런 권한을 확인하는 과정일 인가라고 한다.
기능1. 블로그 글 목록 조회 ArticleListViewResponse.java @Getter public class ArticleListViewResponse { private final Long id; private final String title; private final String content; public ArticleListViewResponse(Article article) { this.id = article.getId(); this.title = article.getTitle(); this.content = article.getContent(); } } BlogViewController.java @RequiredArgsConstructor @Controller public class..
Thymeleaf 타임리프 타임리프는 템플릿 엔진이다. 템플릿 엔진이란 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, HTML 상에 데이터를 넣어 보여주는 도구이다. 템플릿 엔진 개념 h1 태그에는 ${성명}이 text 어트리뷰로 할당되어 있다. p 태그 역시 ${나이} 어트리뷰트로 되어있다. 이것이 바로 템플릿 문법이다. 이렇게 해 두면 서버에서 성명, 나이라는 키로 데이터를 템플릿 엔진에 넘겨주고 템플릿 엔지는 이를 받아 HTMl에 값을 적용한다. { 성명 : "J-Jay" 나이 : 19 } 값이 달라지면 그때 그때 화면에 반영하니 동적인 웹 페이지를 만들 수 있게 된다. 템플릿 엔진은 각각 문법이 미묘하게 달라 템플릿 엔진마다 문법을 새로 배워야 하나, 대부분의 구조는 비슷하여 한 번 배워..
프로젝트 소개 프로젝트 나만의 Blog 만들기 기능 블로그 글 작성 블로그 글 조회(단건 조회/전체 조회) 블로그 글 삭제 블로그 글 수정 기술 Spring Boot Spring Data JPA Lombok H2 build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lomb..
API 네트워크에서 API는 프로그램 간에 상호작용하기 위한 매개체를 말한다. 식당을 예시로 들어보자. 식당에 가면 점원에게 요리를 주문한다. 그리고 점원은 주방에 가서 '요리를 만들어 주세요' 라고 요청한다. 요리가 완성되면 다시 점원이 손님에게 요리를 전달한다. 여기서 손님은 클라이언트, 주방에서 일하는 요리사를 서버라고 생각하고, 중간에 있는 점원을 API라고 생각하면 된다. 이 상황을 웹사이트에 방문하는 상황에 적용해서 생각해보자. 웹사이트의 주소를 입력해서 '네이버 메인화면 보여줘' 라고 요청하면 API는 이 요청을 받아 서버에 전달해준다. 이후 서버는 API가 준 요청을 처리해 결과문을 만들고 이것을 다시 API에게 전달한다. API는 최종 결과물을 브라우저에 보내주고 화면을 볼 수 있게 된다..
스프링 데이터 스프링 데이터는 비즈니스 로직에 더 집중할 수 있게 데이터베이스 사용 기능을 클래스 레벨에 추상화 한다. 스프링 데이터에서 제공하는 인터페이스를 통해 스프링 데이터를 사용할 수 있다. 이 인터페이스에서는 CRUD를 포함한 여러 메서드가 포함되어 있으며, 알아서 쿼리를 생성해준다. 추가로 페이징 처리 기능과 메서드 이름으로 자동으로 쿼리 빌딩하는 기능, 각 데이터베이스의 특성에 맞춰 기능을 확장해 제공하는 기술도 제공한다. 스프링 데이터 JPA 스프링 데이터 JPA는 스프링 데이터의 공통적인 기능에서 JPA의 유용한 기술이 추가된 것이다. 스프링 데이터 JPA에서는 스프링 데이터의 인터페이스인 PagingAndSortingRepository를 상속받아 JpaRepository 인터페이스를 만..
ORM(Object-relational mapping) ORM은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법이다. 예를 들어 데이터베이스에 나이(age)와 성명(name) 컬럼에 20, J-Jay 라는 값이 들어있다고 보고, 이것을 자바에서 사용하려면 어떻게 해야 할까? 보통은 아래처럼 SQL이라는 언어로 데이터를 꺼내 사용을 한다. SELECT age , name FROM EMP 하지만 ORM이 있다면 데이터베이스의 값을 마치 객체처럼 사용이 가능하다. 쉽게 말해 SQL을 전혀 몰라도 자바 언어로만 데이터베이스에 접근해서 원하는 데이터를 받아올 수 있다. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구를 ORM이라고 한다. ORM의 장점과 단점 장점 단점..
테스트 코드 작성 @SpringBootTest //테스트용 애플리케이션 컨텍스트 생성 @AutoConfigureMockMvc // MockMvc 생성 class TestControllerTest { @Autowired protected MockMvc mockMvc; @Autowired private WebApplicationContext context; @Autowired private MemberRepository memberRepository; @BeforeEach //테스트 실행 전 실행하는 메서드 public void mockMvcSetUp() { this.mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); } @AfterEach //테..