Java/SpringBoot 22

UserDetailsService, UserDetails, GrantedAuthority, SimpleGrantedAuthority, stream

생각관리자 페이지와 관리자 권한 설정, 부여에 대하여 수업을 듣는데 @Service 단에서 클래스를 만드는데 UserDetailsService 인터페이스를 상속받는 클래스로 만들었다. 설명을 해주셨지만 처음보는 인터페이스라 금방 까먹었다. 하하. 그래서 공부할 겸 정리해본다.왜 이렇게 어렵냐.. ㅠUserDetailsServiceUserDetailService는 Spring Security에서 사용자 정보를 가져오는데 사용되는 인터페이스이다.주요 역할은 애플리케이션의 사용자 정보를 제공한다.사용자의 인증과 권한 부여에 사용된다.사용자 정보 로드UserDetailsService는 특정 사용자의 정보를 데이터베이스나 다른 저장소에서 가져오는 메서드를 정의한다. 주로 사용자의 이름(username)으로 해당 ..

Java/SpringBoot 2024.10.28

@Configuration, @Bean, @EnableWebSecurity, SecurityFilterChain, HttpSecurity

생각spring security에 대해서 수업을 듣다가 사용자 권한에 들어가면서 특정 클래스에 @Configuration 어노테이션을 정의해줬다. 그래서 이게 정확히 무엇인지 궁금했다.그리고 찾아보니 @Bean과 같이 사용되는데 각 Bean의 인스턴스는 컨테이너 내에서 하나만 존재 한다는 설명을 듣고 이해가 안 갔다. 하나만 존재한다는 말이 무슨 말인지 이해가 가지 않아서 관련 내용을 더 찾아보았다.@Configuration, @Bean, @EnableWebSecurity, SecurityFilterChain, HttpSecurity의 중요성Spring Security에서 보안 관련 기능을 추가하려면 SecurityFilterChain 인터페이스를 사용해야한다.그리고 SecurityFilterChain ..

Java/SpringBoot 2024.10.28

@Param

생각Mapper에서 @Param 어노테이션을 사용하여 값을 xml로 전달한다고는 이해하고 있는데 정확히 알지는 못하여서 정리하고자 글을 작성한다. @ParamMyBatis에서의 @Param은 SQL 쿼리에서 사용하는 파라미터를 지정하는데 사용된다.여러 개의 파라미터를 메소드에 전달할 때 각각의 파라미터에 이름을 붙여 SQL 쿼리에서 사용할 수 있게 한다. 예시 1// Controller 예시public interface UserMapper { User getUser(@Param("id") int id, @Param("name") String name);}// xml 예시 SELECT * FROM user_table WHERE id = #{id} AND name = #{name} ..

Java/SpringBoot 2024.10.28

@ModelAttribute

생각@ModelAttribute 어노테이션은 객체를 바인딩한다고 알고 있다. 객체라면 내가 만든 DTO 라고 해야하나..여하튼 좀 더 자세히 알고 싶어서 정리해두면 좋을 거 같아서 글을 작성한다. @ModelAttribute HTTP 요청의 파라미터를 객체에 바인딩할 때 사용한다.주로 폼 데이터를 처리할 때 유용하다. 등록// Controller 예시@PostMapping("/register")public String register(@ModelAttribute User user) { // user 객체에 폼 데이터가 바인딩됩니다. return "Registration successful for " + user.getName();} 폼 데이터에서 입력한 값이 User 데이터 타입의 user ..

Java/SpringBoot 2024.10.28

@RequestParm

생각@RequestParam을 과 , 을 통해 입력한 값을 HTTP 형태로 받는 정도로만 이해하고 있어서 혹시라도 잘못 이해하고 있지 않을가 싶어서 @RequestParam에 대해서 찾아보았다. @RequestParamHTTP 요청의 쿼리 파라미터나 폼 데이터로부터 값을 바인딩할 때 사용한다. Submit 이런 예시인 경우 input 태그에 안녕하세요. 입력하고 button 태그를 클릭하면 input에 입력한 값이 브라우저 화면에 이 출력된다.// Controller 예시@GetMapping("/message") public String message(@RequestParam String message) { return "Hello, " + message;} 코드 흐름사용자가 필드에 "안녕하세요"라고..

Java/SpringBoot 2024.10.28

[MyBatis] <resultMap>, <id>, <result>, <collection>

생각관리자 페이지를 구현하는 수업에서 권한을 지정하는 내용을 듣다가 user와 role을 따로 테이블을 만든 다음 MyBatis에서 연결을하는데 resultMap이라는 요소를 사용하고 이 요소 안에 , , 을 사용하는 것을 보고 정리해두면 좋을 거 같아서 글로 남긴다. 예시// 예시 SELECT * FROM users WHERE id = #{id}  요소에서 resultMap 속성을 사용하는 이유 요소에서 resultMap 속성을 사용하는 이유는 SQL 쿼리 결과를 Java 객체에 매핑할 때 보다 명확하고 유연한 방식으로 복잡한 데이터 구조를 관리하기 위해서다.부모-자식 관계, 다대다 관계 등 복잡한 객체 구조를 쉽게 표현할..

Java/SpringBoot 2024.10.28

[MyBatis] useGeneratedKeys, keyProperty

생각관리자 페이지 구현을 하는 수업을 듣는 도중에 구문에서 useGeneratedKeys="true" keyProperty="id" 이라는 코드를 보았다. 왜 이것을 사용하는지 정리를 해놓으면 좋을 거 같아서 이렇게 글을 작성한다.useGeneratedKeys="true" keyProperty="id"MyBatis에서 데이터베이스의 자동 생성 키(auto-increment key)를 사용할 때 설정하는 속성 useGeneratedKeys="true"MyBatis가 SQL INSERT 작업 후에 데이터베이스에서 자동으로 생성된 기본 키 값을객체에 자동으로 매핑한다. 즉, 데이터베이스의 기본 키가 자동 생성되는 경우(AUTO_INCREMENT) , MyBatis가 그 값을 가져와서 지정한 객체의 속성에 할당..

Java/SpringBoot 2024.10.28

@Autowired

# 수익을 위해 작성한 글이 아닙니다.  생각@Autowired가 의존성 주입을 한다고 해서 좀 더 명확하게 이해하고 싶어서 찾아보았다.  @Autowired'Spring 컨테이너에 등록된 빈'을 찾아서 '해당 필드에 주입'하는 역할을 한다.  주입한다는 말이 생소할 수도 있다.JAVA에서 인스턴스를 생성과 비슷한 거 아니야? 라고 생각할 수 있지만 엄연히 다르다.@Autowired는 Spring 컨테이너에서 등록된 Bean을 찾아서 해당 필드, 생성자, 메서드에 주입하는 역할이다. 다시한번 더 설명하자면인스턴스 생성은 Spring IoC 컨테이너에서 하고, @Autowired가 이미 생성된 Bean을 가져와 주입하는 역할을 하는 것 뿐이다.

Java/SpringBoot 2024.10.23

Spring Bean (스프링 빈)

# 수익을 위해 작성한 글이 아닙니다.# 수업을 받고 내용을 정리하기 위해 작성한 글입니다. 생각@Autowired를 이해하려고 하다보니 의존성 주입이라는 단어가 보였다. 이미 등록된 빈을 찾아서 해당 필드에 주입해주는 역할을 한다고 해서 이때 빈이란 무엇인지 궁금해졌다.  Spring Bean의 정의Spirng Framework에 관리되는 객체이며, Java 클래스로 정의된다.IoC(제어의 역전) 컨테이너에 의해 생성, 초기화, 소멸되는 모든 객체를 포함한다.  Spring Bean 특징IoC(제어의 역전)Spring Bean은 Spring IoC 컨테이너에 의해 생성되고 관리되는 객체로, 개발자가 직접 인스턴스를 생성하지 않고 컨테이너가 이를 자동으로 처리한다.IoC(Inversion of Contr..

Java/SpringBoot 2024.10.23

@Controller, @RestController 차이

# 수익을 위해 작성한 글이 아닙니다.# 수업을 받고 내용을 정리하기 위해 작성한 글입니다.생각Spring Boot 수업을 들으며 소스코드에 @RestController가 있었다.이름만 봐도 Controller와 같은 기능을 가지고 있겠다고 생각을 했다.그리고나서 주말에 게시판 목록, 상세, 로그인 구현하는 것을 복습을 하다가 뷰템플릿을 구현하는데 에러가 나서 왜 에러가 나는건가 싶어서 찾아보다가 내가 @RestController 어노테이션을 적용시켜놓고 html 문서로 연결하려고 했었던 것이었다. 그래서 @Controller와 @RestController의 차이를 제대로 이해하고 사용해야겠다는 생각에 찾아보았다.  @ControllerMVC 패턴에서 클라이언트의 HTTP 요청을 받아 관련 비즈니스 로직..

Java/SpringBoot 2024.10.23