전체 글 182

spring security 6.1 mysql signin, signup-rest api

관련 Dto 생성 -> controller 생성 -> filterchain 설정(접속권한 부여) DTO 생성 @Data public class LoginDto { private String usernameOrEmail; private String password; } @Data public class SignUpDto { private String name; private String username; private String email; private String password; } AuthController 생성 @RestController @RequestMapping("/api/auth") public class AuthController { @Autowired AuthenticationMana..

spring security 6.1 mysql authentication(개정 생성, login)

기본 순서 db생성(entity)-> repo구성->service 구성 -> security config 구성 entity (db 생성) : Many to Many @Data @Entity @Table(name = "users", uniqueConstraints = { @UniqueConstraint(columnNames = {"username"}), @UniqueConstraint(columnNames = {"email"}) }) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; private String username; @Email private ..

spring security login basic 기본적인 로그인 관련-in memory 방식

이전 방식에서는 override해서 사용했으나 security 6 부터는 객체를 생성해서 @Bean으로 만들어야함 @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecConfig { @Bean PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } @Bean // 기본 필터 생성 SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf(AbstractHttpConfigurer::disable) .cors(Abstrac..

spring rest app 예외 처리(global excetption handler) 방법

spring에서 잡다하게 많이 나오는 애러 정리해서 출력하기 global exception 생성하기 @ControllerAdvice // 예외 처리를 위한 annotation public class GlobalExceptionHandler extends ResponseEntityExceptionHandler { // handle specific exceptions @ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity handleResourceNotFoundException( ResourceNotFoundException exception, WebRequest webRequest) { ErrorDetails errorDetails..

Rest api java filter

리스트에서 필터로 검색하여 json return @GetMapping("/name/{name}") public Optional studentFindByEmail(@PathVariable("name") String name) throws Exception { Optional student = Optional.ofNullable(stdList.stream() .filter(std -> std.getName().contains(name)) .findAny() .orElseThrow(() -> new Exception("찾는 이름이 없습니다."))); return student; } @GetMapping("/list/{email}") public List studentFindByEmailList(@PathVar..

jpa one to many 관련

애러 발생 detached entity passed to persist: sb.lec total.hibernate Entities.oneToMany many to one 측면에서 데이터가 생성되지 않은 상태에서 one to many에 저장하거나 데이터 가 생성되기 전에 foreign key를 설정하려 하면 발생(어찌 보면 당연한...) many to one에 모든 데이터가 저장되고 난 후에 one to many에 리스트를 저장해야 함 결국 순서가 중요 * one to many가 기본으로 lazy가 설정되어 있어 @Transactional 을 해야 수행됨 (이를 피할려면 eager로 해야함) * 참고로 test에서 수행시 @Transactional을 하면 수행 후 데이터는 지워짐... 관련 코드... @E..

jpa tip

jpa에서 기본제공하는 crud를 사용하는 방법 extends 시에 적용한 class를 인식해서 동작함 findByFirstNameLikeAndLastNameOrEmailLike 등 과 같이 연속해서 사용가능 (알아서 sql 을 생성해줌) @Query 를 통해 필요한 sql을 작성 가능... @Repository public interface PersonRepository extends CrudRepository { List findByLastNameLike(String lastName); } 위와 같이 하면 @Query("from Person p where s.lastName = '%포함문자%'" 와 같은 효과가 있음 실제 사용시 List personList = personRepository.findB..