전체 글

스프링 시큐리티 -> 막강한 인증(Authentication)과 인가(Authorization) 기능을 가진 프레임워크 5.1 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트 많은 서비스에서 로그인 기능을 id/password 보다는 구글, 페이스북, 네이버 로그인과 같은 소셜로그인 기능을 사용 -> why ?? 배보다 배꼽이 커지는 경우가 많기 때문에. 직접 구현하면 구현해야할 내용 로그인시 보안 회원가입 시 이메일 혹은 전화번호 인증 비밀번호 찾기 비밀번호 변경 회원정보 변경 Oauth 로그인 구현시 앞선 목록의 것들은 모두 구글, 카카오, 페이스북에 맡기면 되니 서비스개발에 집중할 수 있다. spring-security-oauth2-autoconfigure 라이브러리를 사용하면 스프링2에서..
템플릿 엔진 지정된 템플릿 양식과 데이터가 합쳐저 HTML문서를 출력하는 S/W를 이야기함. 서버템플릿 엔진 -> 서버에서 구동됨. JSP 같은 경우에는 서버에서 자바코드로 문자열을 만든뒤 이것을 HTML로 변환하여 브라우저로 전달 javascript같은 경우에는 브라우저 위에서 작동한다. 즉 브라우저에서 작동될때는 서버템플릿엔진의 손을 벗어나 제어X 즉 vue.js 나 react.js (클라이언트 템플릿엔진)는 브라우저에서 즉 화면을 생성. 서버에서 이미 코드가 벗어난 경우이다. 클라이언트 템플릿 엔진 머스테치란? 수많은 언어를 지원하는 가장 심플한 템플릿 엔진. 그외에도, JSP, Velocity, Freemarker, Thymeleaf등등이 있다. java/org/example/awsspring/w..
컴포넌트 스캔과 의존관계 자동 주입 시작하기 지금까지는 자바코드에 직접 @Bean을 통해 설정정보에 직접등록할 스프링빈을 나열했다. 이렇게하면 누락하는 문제도 발생. 그래서 스프링은 설정정보가 없어도 자동으로 스프링빈을 등록하는 컴포넌트스캔이라는 기능을 제공. 또의존관계 자동주입하는 @Autowired기능도 제공 기존 Appconfig 대신 AutoAppConfig생성 @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)//예제를 안전하게 하기 위해 Configuration붙은 클래스는 제외 )// 자동으로 스프링빈에 등록 p..
웹서비스를 개발하고 운영하다 보면 피할 수 없는 문제 -> DB를 다루는 일. MyBatis 같은 sql mapper를 이용하면 개발보다 sql을 다루는 시간이 더 많음. 객체 모델링 보다 테이블 모델링에만 집중하는 일이 일어남. -> JPA 라는 자바 표준 ORM(object Relational Mapping) 기술을 만나게 됨. JPA 소개 관계형 DB가 웹 애플리케이션의 빠질 수 없는 요소로 되어 감. 애플리케이션 코드보다 SQL 쿼리가 가득하게 됨. 개발자가 아무리 아름답게 자바코드를 설계해도 sql을 통해 DB를 다룰 수 있음. 실제 현업에서는 수십, 수백개의 테이블이 있고, 이테이블의 몇 배나 되는 sql을 만들고 유지 보수 해야함. 단순반복작업을 수백번 해야하는 스트레스. 또 다른 문제 패러..
@ExtendWith(SpringExtension.class) @WebMvcTest(controllers = HelloController.class) class HelloControllerTest { @Autowired private MockMvc mvc; @Test public void hello가_리턴된다() throws Exception{ String hello = "hello"; mvc.perform(get("/hello")) .andExpect(status().isOk()) .andExpect(content().string(hello)); } } @ExtendWith @WebMvcTest - 여러 스프링 테스트 어노테이션 중 Web(Spring Mvc)에 집중할 수 있는 어노테이션 - 선언할 경..
본 포스팅은 김영한님의 강의를 듣고 공부를 위해 포스팅되었습니다! 대부분의 스프링 어플리케이션은 웹 어플리케이션. but 웹이 아닌 어플리케이션도 개발 가능. 웹 애플리케이션은 보통 여러고객이 동시에 요청을 한다. 순수DI 컨테이너인 AppConfig는 요청할때마다 객체를 생성한다. -> 메모리 낭비가 심함. 이를 해결하기 위해서는 한개의 객체만 생성하고 공유하도록 설계하게한다. -> 싱글톤패턴 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 -> private생성자를 이용하여 외부에서 생성못하게 막음. public class SingletonService { private static final SingletonService instance = new SingletonSe..