스프링 부트는 스프링 프레임워크를 기반으로 만들어진 백엔드 프레임 워크이다. 스프링 부트의 동작원리를 이해하기전에 스프링 부트의 다양한 계층, 클래스를 알아보자 레이어 Presentation Layer (프레젠테이션 계층)프레젠테이션 계층은 HTTP 요청을 처리하고 JSON으로 받은 데이터를 객체로 변환하여 요청을 인증하고 비지니스 계층으로 전달한다. 간단히 말해서 뷰, 즉 프론트엔드 부분으로 구성됨 Business Layer (비지니스 계층)비지니스 계층은 모든 비즈니스 로직을 처리하며 서비스 클래스로 구성되어 데이터 엑세스 계층에서 제공하는 서비를 사용합니다. 그리고 권한 부여 및 유효성 검사를 수행합니다. 데이터 엑세스 계층: DAO나 Repository와 같은 데이터 베이스와 직접 접근하는 계층...
요구사항네이버 로그인과 구글 로그인을 사용하기 때문에 이를 구별 해줄 수 있는 서비스를 구현해야한다. 서비스 구현@Service@RequiredArgsConstructorpublic class CustomOAuth2UserService implements OAuth2UserService {}OAuth2UserService 타입을 파라미터로 받고 서비스를 설정하기 때문에 반드시 상속 받아야 한다. 메서드 오버라이딩@Service@RequiredArgsConstructorpublic class CustomOAuth2UserService implements OAuth2UserService { @Override public OAuth2User loadUser(OAuth2UserRequest userR..
기존 Controller @RequiredArgsConstructor @Controller public class IndexController { private final GamesService gamesService; private final HttpSession httpSession; @GetMapping("/") public String index(Model model){ model.addAttribute("games", gamesService.findAllPaging(0,9)); SessionUser user = (SessionUser) httpSession.getAttribute("user") if (user != null) { model.addAttribute("userName",user.ge..
1. Security 설정 스프링 시큐리티를 사용하는데 쓸 기능들을 명시해준다 @RequiredArgsConstructor // 스프링 시큐리티 설정 활성화 @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { private final CustomOAuth2UserService customOAuth2UserService; protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .headers().frameOptions().disable().disable() .authorizeRequests() //URL 별 ..
TestCode @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT) @Transactional public class GamesApiControllerTest extends TestCase { @Autowired private TestRestTemplate restTemplate; @LocalServerPort private int port; @Test public void testGamesReResponse() { Integer request = 1; String url = "http://localhost:"+port+"/api/appendGames"; //when Re..
조인 - 객체 끼리 조인을 통해 조인 쿼리문을 사용할 수 있다. • 내부 조인 SELECT m FROM Member m [INNER] JOIN m.team t • 외부 조인 SELECT m FROM Member m LEFT [OUTER] JOIN m.team t • 세타 조인 select count(m) from Member m, Team t where m.username = t.name 조인 - ON 절 1. 조인 대상 필터링 • 예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인 JPQL SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A' SQL SELECT m.*, t.* FROM Member m LEFT JOIN Team t ON m...