Spring Framework: 317개의 글
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/byFogl/btrC0NwlZBE/zjS9cpgRLmtkKJ58dUD1B0/img.png)
@ModelAttribute는 어떻게 Formatter 없이 작동할까? @RequestParam 이나 @PathVariable로 들어온 문자열 값을 객체로 받기 위해서는 Formatter 가 필요하다. 아래 예제로 살펴보자. title이라는 String형 변수와 length라는 int형 변수를 가진 DTO이다. @Getter @Setter public class Music { String title; int length; } 만약 @RequestParam이나 @PathVariable로 넘어온 문자열 값을 Music객체로 받고 싶다면 아래와 같이 코드를 작성하면 된다. @ResponseBody @GetMapping("/hello/{title}"){ public String hello(@Pathvariabl..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/vWLhQ/btrC0OInw69/QPqbj9Sk2EmeAkkzkk77yk/img.png)
자동 의존성 주입 어노테이션 정리 @Autowired 검색 순서 : 타입 -> 이름 -> @Qualifier -> 검색 실패시 예외 처리 또는 null 처리 @Autowired는 주입하려고 하는 객체와 타입이 일치하는 객체를 자동으로 주입한다. 최근에는 대부분 빈 주입시 생성자 주입을 선택하고 있기 때문에 생성자 주입을 기준으로 설명하겠다. public class AutowirdService { private final AutowiredRepsository autowiredRepository; @Autowired public AutowiredService(AutowiredRepository autowiredRepository) { this.autowiredRepsository = autowiredRepo..
회원가입 환경을 구현할때 여러가지로 고려해야할 사항이 많다. 예들들어, 비밀번호의 최소 갯수, 닉네임의 최수 글자수, email과 닉네임의 중복체크 등등이 있다. Controller에서 회원가입 진행 시 유효성 검사하기@Vaild 어노테이션을 설정하면, SignUpForm에 설정한 어노테이션들을 바탕으로 유효성 검사를 진행한다. errors.hasErrors() 유효성 검사를 바탕으로 위배되는 사항이 있는경우 에러가 검출되어 다시 회원가입 창으로 이동하게 된다. 유효성 검사 이후, 중복검사를 진행한다. @PostMapping("/sign-up") public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors){ if(errors.hasErr..
스프링을 처음 사용하면 @Autowired, @Component, @Controller 등 다양한 어노테이션을 사용해야한다. 그런데 이 어노테이션들이 정확히 어떤 역할을 하는지 모르고 일단 사용하는 경우가 많이 있다. 오늘은 스프링 빈을 등록하는 2가지 방법을 알아보도록 하자. 1. 컴포넌트 스캔과 자동 의존관계 설정 -> 컴포넌트 스캔의 원리는 기본적으로 @Component 어노테이션이 있으면 자동으로 스프링 빈으로 등록된다. 참고로, @Component 어노테이션은 @Controller , @Service, @Repository를 포함한다. -Controller @Controller public class MemberController { private final MemberService member..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bcyfgv/btrC2LYmJFh/tKPxUrAqjurH0uXwMyhPN1/img.png)
Google STMP -학교에서 진행하는 프로젝트에서 비밀번호 찾기를 구현하면서 알게된 방법이다. 개발환경 IntelliJ JPA SpringBoot Gradle *준비작업 1. 여기를 클릭해서 보안 수준이 낮은 앱의 액세스를 [허용] 으로 변경해야 합니다. 2. gradle 의존성을 추가합니다.. implementation 'org.springframework.boot:spring-boot-starter-mail' *maven을 사용한다면 아래 코드를 추가합니다. org.springframework.boot spring-boot-starter-mail 1.4.3.RELEASE 3. application.yml에 아래 내용 추가합니다. (git 커밋할때 아래 정보가 유출되지 않도록 주의!) spring:..
스프링 시큐리티는 "인증"과 "권한"이 있다. Authentication(인증) : '이것' 이라고 주장하는 주체(user)가 '이것'이 맞는지 확인하는 것 코드에서 Authentication : 인증 과정에 사용되는 핵심 객체 ID/PASSWORD 등 여러 방식으로 인증에 필요한 값이 전달되는 하나의 인터페이스 #인증방식의 종류 1) credential 기반 인증 : 사용자명과 비밀번호를 이용한 방식 2) 이중 인증 (twofactor 인증) : 사용자가 입력한 개인 정보를 인증 후 추가인증(OTP) 하는 방법 3) 하드웨어 인증 : 자동차 키 Spring Security는 credential 기반의 인증을 취한다. 로그인 과정 AuthenticationFilter 필터 리스트 WebAsyncManag..
REST API -웹브라우저에서 실행되는 javascript로 개발한 앱을 위한 서버를 개발할 때, REST API 서비스를 제공하는 서버를 구현한다. REST API 서비스라는 것은 클라이언트의 URL요청에 대해서 JSON형태의 데이터를 출력하는 서버의 메소드를 말한다. Single-Valued Association - 두 개의 테이블 ex) employee와 department에서 외래키(employee 테이블의 departmentId)가 포함된 employee 객체에 department 멤버 변수를 구하는 것이 기본이다.(필수) @Entity public class Employees { .... 생략 ... @ManyToOne @JoinColumn(name ="departmentId") Depart..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bbA5vh/btrCWQgkFRl/474qEjavI9KsxOh8SZTvs1/img.png)
회원가입 또는 가입 후 휴대폰인증 구현을 위한 API 'coolSMS' 사용방법 : 다날과같은 서비스를 이용하여 문자인증을 구현하기위해서는 실제로 업체와 계약을 통해 진행해야하기때문에 학부 프로젝트에서는 적용할수가 없다. 그래서 비슷하게 흉내내기위해 coolSMS라는 문자메시지 전송 API를 이용해서 구현해보았다. 1. coolSMS 사용 준비 - coolsms 회원가입 하기 - coolsms 개발자센터에 접속합니다. 쿨에스엠에스 - 우주에서 가장 빠르고 안정적이고 쉬운 문자메시지(SMS) 서비스를 제공합니다. 알림톡, 문자메시지를 쉽고 빠르게 전달해 드립니다. developer.coolsms.co.kr -JAVA 클릭 coolsms 사용준비 -아래 화면에 보이는 step1과 step2를 차례대로 실행 ..
import java.security.MessageDigest; public class EncryptionUtils { public static String encryptSHA256(String s) { return encrypt(s, "SHA-256"); } public static String encryptMD5(String s) { return encrypt(s, "MD5"); } public static String encrypt(String s, String messageDigest) { try { MessageDigest md = MessageDigest.getInstance(messageDigest); byte[] passBytes = s.getBytes(); md.reset(); byte[..
컨트롤러 클래스 없이 특정 view에대한 컨트롤러를 추가할 수 있다. 아래와 같이 WebMvConfigurer를 구현하는 클래스를 만들고 addViewControllers(ViewControllerRegistry registry) 메소드를 오버라이딩 하면 된다. @Configuration @EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { //시작페이지 url을 '/'가 아닌 home으로 registry.addRedirectViewController("/", "home"); } } 위 코드는 ..