묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
블로그에 정리해서 올려도 될까요?
안녕하세요 나도 코딩님 강의 잘 듣고 있고 배운지 꽤 되서 감을 잊고있었는데 되새김질이 되서 좋습니다. 제가 또 잊어버릴까봐 걱정되서 그러는데 혹시 제가 블로그에 정리해도 되나요???퀴즈에 대한 강의는 나도 코딩님의 지적 재산이니 일절 올리지 않을것이고 강의로 인해 배운 지식에 대해서만 올리겠습니다.기본 예시에 대한 문제라면 제가 어레인지해서 올리도록하겠습니다. 허락 부탁드립니다...!!!!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
result부분에서 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]오류가 떠서 저는 static 을 넣어라고 되어 있는데 그대로 넣어서 해야하나요 아니면 어떤 부분이 잘못 되었길래 이러는 걸까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderService.findOrders() 결과인 orders의 order가 orderItems를 갖지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]주문하기에서 HTML 오류가 떠서 같은 오류의 글들을 찾아보다가 order.orderList.html의 <tr th:each="item : ${orders}"> <td th:text="${item.id}"></td> <td th:text="${item.member.name}"></td> <td th:text="${item.orderItems[0].item.name}"></td> <td th:text="${item.orderItems[0].orderPrice}"></td> <td th:text="${item.orderItems[0].count}"></td> <td th:text="${item.status}"></td> <td th:text="${item.orderDate}"></td> <td> <a th:if="${item.status.name() == 'ORDER'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">CANCEL</a> </td> </tr>부분에서 item.orderItems[0] 값이 있는지 확인하라는 글을 보고 OrderService.findOrders()의 결과를 디버깅하면서 확인했습니다.같은 오류의 다른 글들 모두 확인했고, 해당 사항 없었으며, 디버깅 시 DB에는 orderItem의 값이 정상적으로 저장되는 것을 확인했습니다.혹시나해서 OrderService.findOrders()의 내부 구현을 OrderRepository.findAllByString()과 OrderRepository.findAllByCriteria() 모두 해보았지만, 결론적으로 이 두 메서드가 반환한 orders가 orderItems을 갖지 못하는 것을 확인했습니다.현재 야생형 커리큘럼 중이어서 위 두 메서드의 코드를 분석하기에 어려움을 겪어 질문 올립니다. 아래는 OrderRepository 소스코드입니다.package jpabook.jpashop.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.TypedQuery; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Join; import jakarta.persistence.criteria.JoinType; import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; import java.util.ArrayList; import java.util.List; import jpabook.jpashop.domain.Member; import jpabook.jpashop.domain.Order; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.util.StringUtils; @Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em; public void save(Order order) { em.persist(order); } public Order findOne(Long id) { return em.find(Order.class, id); } public List<Order> findAllByString(OrderSearch orderSearch) { //language=JPAQL String jpql = "select o From Order o join o.member m"; boolean isFirstCondition = true; //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " o.status = :status"; } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName())) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " m.name like :name"; } TypedQuery<Order> query = em.createQuery(jpql, Order.class) .setMaxResults(1000); //최대 1000건 if (orderSearch.getOrderStatus() != null) { query = query.setParameter("status", orderSearch.getOrderStatus()); } if (StringUtils.hasText(orderSearch.getMemberName())) { query = query.setParameter("name", orderSearch.getMemberName()); } List<Order> orders = query.getResultList(); return orders; } public List<Order> findAllByCriteria(OrderSearch orderSearch) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Order> cq = cb.createQuery(Order.class); Root<Order> o = cq.from(Order.class); Join<Order, Member> m = o.join("member", JoinType.INNER); //회원과 조인 List<Predicate> criteria = new ArrayList<>(); //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { Predicate status = cb.equal(o.get("status"), orderSearch.getOrderStatus()); criteria.add(status); } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName())) { Predicate name = cb.like(m.<String>get("name"), "%" + orderSearch.getMemberName() + "%"); criteria.add(name); } cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); TypedQuery<Order> query = em.createQuery(cq).setMaxResults(1000); //최대 1000건 List<Order> orders = query.getResultList(); return orders; } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Test부분에서 실행이 안돼서 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이렇게 뜨는데 어떻게 해야하는 부분인가요? 처음 실행했을때는 이 부분에서 return null이 없어서 오류가 떴는데 강사님과 다르게 return null을 넣어야 하는것도 잘 모르겠습니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
File is read only 해결을 못하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]자물쇠 해결도 해보았고, File - File properties- Make file Writable도 해보았으나 해결이 안됩니다
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
Quiz6에 대한 피드백 부탁드립니다(이번 문제는 배열이 아니라 String 클래스라서 "*" 처리하는데 굉장히 애먹었네요 ㅎㅎ;;)
package chap_06; public class _Quiz_06 { public static String getHiddenData(String src, int index) { // 1. substring()을 이용하면 문자열의 일부를 자를 수 있음 // 2. length()를 이용하면 문자열의 길이를 알 수 있음 // 알고리즘: src의 길이를 파악한 후, substring()으로 문자열을 먼저 잘라보자 String temp = src.substring(index); // index부터 슬라이싱 String hiddenStr = temp.replaceAll("[코딩]", "*"); // 나** String hiddenNum = hiddenStr.replaceAll("[0-9]", "*"); // 0~9까지의 모든숫자를 *로 만들겠다 String ori = src.substring(0, index); return ori + hiddenNum; } public static void main(String[] args) { // 1. 개인정보를 비공개로 전환하는 메소드 작성 // 2. 하나의 메소드에서 모든 동작 처리( getHiddenData(name, 1) ) // 3. 각 정보는 아래 위치부터 비공개 적용 String name = "나코딩"; // 이름 String id = "990130-1234567"; // 주민등록번호 String phone = "010-1234-5678"; // 전화번호 System.out.println("이름 : " + getHiddenData(name, 1)); // 개인정보, 비공개 시작 위치 System.out.println("주민등록번호 : " + getHiddenData(id, 8)); System.out.println("전화번호 : " + getHiddenData(phone, 9)); } }추가로, str.replaceAll() 메소드는 oldstring를 []와 같이 정규표현식(regular expression)으로 사용하여, []안에 있는 모든 값을 newstring으로 바꾸겠다는 의미입니다.https://jamesdreaming.tistory.com/85str.replace()는 예를 들어, str.replace("코딩, "*")을 하면 나*만 나오는데 비해, str.replaceAll("[코딩]", "*")을 하면 나**로 나오는 것으로 보아, 정규식에 포함하는 리터럴 상수를 하나씩 *로 바꿔주는 것 같습니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
2가지 이상 자료형을 가지는 변수는 받을 수 없나요?
2가지 이상 자료형을 가지는 변수는 받을 수 없나요?String | int 이렇게 두가지를 같이 선언 불가한가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8.수열 추측하기
이 문제에서 N이 만약 5일 경우, 더한 결과값이 값에 각각 4C0 4C1 4C2 4C3 4C4 를 곱해서 더한것과 같다고 하셨는데 왜 그런지 이유를 모르겠습니다..!!ㅜㅜ
-
미해결자바 코딩테스트 - it 대기업 유제
공부 방법 질문 있습니다.
안녕하세요 선생님. 먼저 이번에도 좋은 강의 감사드립니다.제 공부방법에 대해 질문드리고 싶은데요, 저의 경우는 일단 고민을 해서 제 코드로 문제를 해결한 후에,선생님의 해설 강의를 듣고 보안할 부분이 있다면 코드를 수정하여 , 다시 리뷰하면서 코드를 작성하는 편으로 복습을 하고 있습니다.그런데 가끔 , 제 방식과 선생님의 방식이 전혀 다른 경우가 있습니다. 예를들면 이번 문제가 그러했는데요,이렇게 풀이 방식이 다른 경우에도, 일단 선생님이 설명해주신 방식대로 생각하고 , 코드를 작성하는 것이 사고의 폭을 넓이는 방식이겠죠? (제가 정답을 알고있는것 같은데,, 질문 드려서 죄송합니다.)
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
테스트코드 질문드립니다.
안녕하세요, 강사님.강사님 덕분에 항상 코틀린 공부 재미있게 하고 있습니다!getUserLoanHistoriesTest2 테스트 코드 관련해서 질문드립니다.제가 강의를 보기 전에 혼자 작성해보았던 코드는 아래와 같은데요.// given val savedUser = userRepository.save(User("A", null)) savedUser.loanBook(Book.fixture("book1")) savedUser.loanBook(Book.fixture("book2")) savedUser.loanBook(Book.fixture("book3")) savedUser.returnBook("book3") userRepository.save(savedUser)테스트는 통과가 되는데, 위와 같이 해도 테스트 코드로서 의미가 있는지, 그런면에서 userLoanHistoryRepository.saveAll()을 사용하는 것이 더 적절한 건지 궁금합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
int size = 120;
int size = 120;size = size + 10; System.out.println(size)int는 자료형의 변수 size와 아래 코드에 있는 size는 다른 건가요? size라는 덩어리에 값을 담는 다는 건 알고 있습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
간단한 질문이지만 궁금하여 해봅니다..
간단한 질문이지만 궁금하여 해봅니다회원서비스 테스트 강의에서 중복 회원 예외 메소드안에서try catch문을 통한 예외를 잡는 구문인데요.오류의 결과중에org.opentest4j.AssertionFailedError: expected: "이미 존재하는 회원입니다.123123" but was: "이미 존재하는 회원입니다"Expected :"이미 존재하는 회원입니다.123123"Actual :"이미 존재하는 회원입니다"라고 저는 뜨지만,강의에서는 Expecting:<"이미 존재하는 회원입니다.">to be equal to:<"이미 존재하는 회원입니다.123123">but was not. 이런식으로 저의 오류와 반대로 나오는데이것이 버전이 up되면서 바뀐건가요 아니면 설정을 따로 안한게 있을까요?갑자기 궁금하여 질문드립니다.감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.bat 실행 안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. h2.bat이 실행이 안됩니다 여기에 질문 다 찾아보고 했는데도 안됩니다cmd입력도 깜빡이고 console 은 아예 실행도 안됩니다 도와주세요파일에서 열면 이거 뜨고요cmd에서 하면 이렇게 깜빡이다가 안떠요 이건 bat 파일 내부입니다 *1.4.200버전도 해봤습니다IntelliJ 실행해서 오류가 나는건가요?근데 끄고 bat 실행해도 안됩니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.flush(), em.clear() 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. flush와 clear를 하시는 이유가 영속성 컨텍스트에 있는 데이터들을 DB에 옮기고 영속성 컨텍스트는 비워두기 위해서 하시는 거로 이해를 했는데, 굳이 DB에서 조회하지 않고 영속성 컨텍스트에 있는 데이터를 조회해서 써도 되지 않나요?? flush와 clear하시는 정확한 이유가 궁금합니다!!
-
해결됨Do it! 알고리즘 코딩테스트 with JAVA
시간복잡도 강의 질문
시간복잡도 강의에서 n이 100만일 때를 가정해서 설명해주셨고, 상수는 무시한다라는 걸 확인했습니다. 만약, 0부터 n까지 도는 for문 하나가 100만개 있다고 가정하면, 이것 또한 상수를 무시해서 Big-O 표기법으로 O(N)이 되나요? 아니면 N * N이 되므로 O(N^2)이 되나요?
-
해결됨스프링 시큐리티
SessionCreationPolicy의 IF_REQUIRED와 NEVER 속성에 대해서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. IF_REQUIRED의 설명 중 "필요시"라고 되어있는 부분이 있는데 어떤 상황이 "필요시"에 해당할까요??NEVER의 설명 중 스프링 시큐리티가 생성하지 않지만 "이미 존재"하면 사용이라고 써놓으셨는데, 애초에 생성하지 않았는데 어떻게 이미 존재할 수 있나요??
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jpa 1:n 조인
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]일대다 관계의 테이블에서 조인을 하면 데이터가 뻥튀기 되는건 당연한건데 이걸 자바 객체 입장에선 리스트로 어차피 한번에 다 들고있으니까 뻥튀기가 될 필요가 없다고 생각하면 될까요 ? (그래서 distinct를 사용하고 )
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew.bat 파일이 안보입니다. 또한 어떻게 실행해야될지 감이안잡히네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]gradlew.bat 위치는 인텔리제이 상에서 C:\test\hello-spring\hello-spring 있다고는 하는데 폴더에 없어요
-
미해결스프링 시큐리티
접근이 거부되었습니다. 예외가 발생합니다.
5) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (2) 강의 관련 질문입니다. 참고로, 현재 SecurityConfig 파일이 파일명으로 구분해서 Ajax 인증용과 폼인증 두개 입니다.문제는 로그인까지 성공하고 /mypage 로 들어가면 접근 거부 예외가 생깁니다.'org.springframework.security.access.AccessDeniedException: 접근이 거부되었습니다.' SecurityConfig , AjaxSecurityConfig 설정파일명으로 구분했고 마지막에 설정 코드도 올렸지만 authenticationManager 같은 Bean 메서드들도 이름으로 구분했습니다. 사용자정보, 권한정보등 제대로 갖고 왔는데 어디가 잘못된건지 잘모르겠네요..혹시 시큐리티 설정파일에서 서비스 클래스 두가지를 사용해서 그런지 의심도 되고 그렇네요..private final SecurityResourceService securityResourceService;private final UserDetailsService userDetailsService; 아래에 도움이 될까 해서 디버깅화면 캡쳐해서 올렸습니다.감사합니다. AbstractSecurityInterceptor 클래스UrlFilterInvocationSecurityMetadataSource 클래스 RoleVoter 클래스ExceptionTranslationFilter 클래스FormAccessDeniedHandler 클래스AccessDeniedException 클래스 웹페이지에는 흰 배경만 나타나고 302 코드를 반환하네요.Request URL:http://localhost:8080/mypageRequest Method:GETStatus Code:302Remote Address:[::1]:8080Referrer Policy:strict-origin-when-cross-orig 시큐리티 설정파일 @Configuration@RequiredArgsConstructor@Order(1)public class SecurityConfig { @Bean public WebSecurityCustomizer configure() { return (web) -> web.ignoring().mvcMatchers( "/css/**", "/js/**", "/error" ); } private final AuthenticationConfiguration authenticationConfiguration; private final AuthenticationDetailsSource authenticationDetailsSource; private final AuthenticationSuccessHandler formAuthenticationSuccessHandler; private final AuthenticationFailureHandler formAuthenticationFailureHandler; private final SecurityResourceService securityResourceService; private final UserDetailsService userDetailsService; public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/", "/users", "user/login/**", "/login*").permitAll() .antMatchers("/mypage").hasRole("USER") .antMatchers("/messages").hasRole("MANAGER") .antMatchers("/config").hasRole("ADMIN") .anyRequest().authenticated() .and() .exceptionHandling() //.accessDeniedPage("/denied") .accessDeniedHandler(accessDeniedHandler()) .and() .addFilterBefore(customFilterSecurityInterceptor(), FilterSecurityInterceptor.class) ; http .formLogin() .loginPage("/login") .loginProcessingUrl("/login_proc") .authenticationDetailsSource(authenticationDetailsSource) .defaultSuccessUrl("/") .successHandler(formAuthenticationSuccessHandler) .failureHandler(formAuthenticationFailureHandler) .permitAll() ; //http.csrf().disable(); return http.build(); } public FormAuthenticationProvider formAuthenticationProvider() { return new FormAuthenticationProvider(userDetailsService, passwordEncoder()); } @Bean public AccessDeniedHandler accessDeniedHandler(){ FormAccessDeniedHandler accessDeniedHandler = new FormAccessDeniedHandler(); accessDeniedHandler.setErrorPage("/denied"); return accessDeniedHandler; } @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { ProviderManager authenticationManager = (ProviderManager) authenticationConfiguration.getAuthenticationManager(); authenticationManager.getProviders().add(formAuthenticationProvider()); return authenticationManager; } @Bean public FilterSecurityInterceptor customFilterSecurityInterceptor() throws Exception { FilterSecurityInterceptor filterSecurityInterceptor = new FilterSecurityInterceptor(); filterSecurityInterceptor.setSecurityMetadataSource(urlFilterInvocationSecurityMetadataSource()); filterSecurityInterceptor.setAccessDecisionManager(affirmativeBased()); filterSecurityInterceptor.setAuthenticationManager(authenticationManager(authenticationConfiguration)); return filterSecurityInterceptor; } public AccessDecisionManager affirmativeBased() { AffirmativeBased affirmativeBased = new AffirmativeBased(getAccessDecisionVoters()); return affirmativeBased; } private List<AccessDecisionVoter<?>> getAccessDecisionVoters() { return Arrays.asList(new RoleVoter()); } /** * 자원/권한 정보를 저장하고 있는 클래스를 빈으로 생성 * @return * @throws Exception */ @Bean public FilterInvocationSecurityMetadataSource urlFilterInvocationSecurityMetadataSource() throws Exception { return new UrlFilterInvocationSecurityMetadataSource(urlResourcesMapFactoryBean().getObject()); } private UrlResourcesMapFactoryBean urlResourcesMapFactoryBean() { UrlResourcesMapFactoryBean urlResourcesMapFactoryBean = new UrlResourcesMapFactoryBean(); urlResourcesMapFactoryBean.setSecurityResourceService(securityResourceService); return urlResourcesMapFactoryBean; }}
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
9_6 친구인가(서로소문제)
안녕하세요 교수님, 질문이있어서 글 남깁니다.교수님과 살짝 다른풀이로 풀었는데, 채점하는 사이트에서 계속 첫번째 케이스에서 runtime error가 나서요ㅠㅠ다른 테스트케이스들은 잘돌아가는데 첫번째만 안돌아갑니다ㅜㅜ자바 이클립스에서도 문제없이 예제테스트케이스 (첫번째 테스트케이스) 돌아갑니다.... // 서로소 집합 (유니온파인드) import java.util.*; class Main { static int n,m=0; //n:학생수, m:순서쌍개수static int[] parent; public static int find(int x) {if(x==parent[x]) return x;elsereturn parent[x]=find(parent[x]); //최상위 부모 누구인지 } public static void main(String[] args) {Main tree=new Main();Scanner scanner=new Scanner(System.in);n=scanner.nextInt();m=scanner.nextInt();parent=new int[n+1]; //배열 초기화 해야됨 - 자기자신이 부모가 되도록 초기화for(int i=1; i<=n; i++) {parent[i]=i;} //입력받아서 배열만들기for(int i=1; i<=m; i++) {int par=scanner.nextInt();int son=scanner.nextInt();parent[son]=par;} int a=scanner.nextInt();int b=scanner.nextInt(); if( (tree.find(a)) != (tree.find(b)) ){ System.out.print("NO"); } else System.out.print("YES"); } }