묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
내부 클래스 static 질문입니다.(두번째)
public class ComponentFilterAppConfigTest { @Test void filterScan(){ ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); assertThat(beanA).isNotNull(); assertThrows( NoSuchBeanDefinitionException.class, () -> ac.getBean("beanB", BeanB.class)); } @Configuration @ComponentScan( includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class), excludeFilters= @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = MyExIncludeComponent.class) ) static class ComponentFilterAppConfig{ } }static class ComponentFilterAppConfig{ } 가 static 이 없으면 오류가 나는게 (내부 클래스가 static이 없으면 오류가 나는게)ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class);위에 코드에서 외부 클래스를 생성해야 내부 클래스를 생성할 수 는데 외부클래스를 스프링 컨테이너에 생성하지 않아서 그런 건가 하고 외부클래스와 내부클래스 모두 스프링 컨테이너에 넣어봤습니다.ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfigTest.class,ComponentFilterAppConfig.class);위에 코드처럼 해보니 잘돌아갔습니다.<질문 1>하지만 제 생각에는 컨테이너에 동시에 외부클래스, 내부 클래스 를 스프링 빈으로 자동 등록하는 건데 왜 되는 건지 모르겠습니다.==================================그래서 외부클래스를 등록하면 자동으로 하위 클래스인 내부 클래스가 등록 되어서 되는 건가해서외부 클래스만 넣어봤더니ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class);아래와 같이 내부클래스가 작동되지 않았습니다.org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'beanA' available<질문 2>스프링은 상위 클래스를 넣으면 그에 해당하는 하위클래스 모두 따라 넣어진다고 배웠는데 내부 클래스는 외부클래스의 하위 클래스가 아닌 건가요?? 아래 글 참고하여 질문 드렸습니다https://www.inflearn.com/questions/257297
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
try, catch, throw, throws 관련 질문입니다!
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]try, catch, finally, throw, throws문 관련해서 질문이 있습니다!예를 들어 update 메소드를 보면 catch문에서 throw e를 통해 Exception을 개발자가 직접 던져주게 되는데, 이 Exception을 update 메소드의 throws SQL Exception을 통해 처리한다고 이해했습니다.그렇다면 이 update 메소드의 SQLException은 누가 처리해주는 건가요?update메소드를 호출해주는 함수가 처리해주는 건가요?혹시 맞다면 테스트함수에서 예외처리해주는 부분이 있어야 할 텐데 따로 예외처리해주는 부분이 없어서 궁금합니다!혹시 틀렸다면 누가 처리해주는 건지 궁금합니다!그 외에 제가 잘못 이해한 부분이 있다면 알려주시면 감사하겠습니다!
-
해결됨스프링 핵심 원리 - 기본편
@Autowired 질문입니다.
@Autowired는 자동 의존관계 주입하고 빈을 등록하는 건 아니다 라고 이해하면 될까요??(ComponentScan에 의해 컨테이너에 등록된 빈을 타입으로 조회하여 의존관계를 자동으로 주입한다)아래코드를@Component public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } 저는 @ComponentScan 이 @Component 가 붙은 MemberServiceImpl 클래스와 MemorymemberRepository를 스프링 빈으로 등록하고 그 다음으로 생성자에 @Autowired가 MemberServiceImpl 과 의존관계를 가지는 memberRepository을 타입으로 검색해서 나온 MemorymemberRepository를 자동으로 의존 관계로 주입한다.라고 이해를 했는데 이게 맞는지 궁금합니다.답변해주시면 정말 감사하겠습니다.
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
38강 추가 질문
이전 문제는 application.yml 파일 오타가 문제였습니다... h2데이터베이스로 실행은 완료했는데 브라우저에서 h2 홈페이지에 접속해서 connect를 누르면이런 오류가 발생하는데 어떻게 해결하면 될까요..???
-
해결됨토비의 스프링 부트 - 이해와 원리
테스트를 의식한 소스 코드 작성에 대한 토비님의 의견이 궁금합니다.
안녕하세요 강의 재밌게 듣고 있습니다 :D이번 강의 중 테스트에 있어 DI의 장점을 제 나름의 언어로 재정의 해보았습니다.의존성을 고립시켜 테스트 목적 객체가 아닌 다른 객체의 영향으로 실패할 수 있는 상황을 차단한다.따라서 DI는 단위 테스트에 대한 신뢰성을 보장한다라고 이해했습니다.그런데 이런 생각을 하던 도중 그렇다면 소스코드가 테스트를 의식한 코드를 작성해야 하는 것 아닌가? 하는 생각도 듭니다.예전에는 이게 싫어서 해당 객체를 상속받은 페이크 객체를 만들어서 테스트 코드에서 의존성을 밀어 넣는 식으로 작성했는데요,다른 의견들도 찾아보니 소스코드의 안정성을 보장하기 위해 테스트에 의존한 코드를 짜야 한다, 테스트는 소스코드를 위해 존재하는데 소스코드가 테스트에 의존하는 건 자연스럽지 않다, 테스트하기 좋은 간단한 코드를 짜면 이러한 걱정할 필요가 없다 등 여러 의견들이 있는 것 같습니다.따라서 이에 토비님 의견도 궁금하고 듣고 싶습니다 ㅎㅎ감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
mysql 설치...
rpm은 설치를 한거같은데 key가 안맞는거같네요..folder1 mysql57-community-release-el7-11.noarch.rpm.1folder2 mysql80-community-release-el7-5.noarch.rpmmysql57-community-release-el7-11.noarch.rpm mysql80-community-release-el7-5.noarch.rpm.1 Total size: 211 MDownloading packages:경고: /var/cache/yum/x86_64/2/mysql57-community/packages/mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEYRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.Check that the correct key URLs are configured for this repository. Failing package is: mysql-community-libs-compat-5.7.41-1.el7.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
38강 질문
안녕하세요 강의 잘 듣고 있습니다. 강의를 듣다 질문이 있어서 글 남깁니다!profiles 설정을 할때 인텔리제이 무료 버전이라 add vm options 를 -Dspring.profiles.active=local 로 설정하면 local로 설정할 수 있다고해서 이런식으로 일단 profiles를 local로 설정했는데 홈페이지 실행 후 접속하니 mysql에서의 정보가 그대로 남아있습니다. local설정을 잘 했는데 h2에 연결이 안되는거 같은데 원인이 무었일까요? 그리고 h2사이트에 접속해 강의 내용대로 connect를 하니 접속이 안됩니다...
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
DB 값 질문
안녕하세요 코틀린강의부터 코프링까지 잘 듣고 있습니다.바로 질문 드리자면,!1.saveUserTest2라는 테스트케이스를 한 개 더 만들어서 모든 테스트를 진행 시킨다면, saveUserTest는 통과하지만 saveUserTest2는 DB데이터가 2개가 있어서 통과되지 못 합니다. 이럴 때는 어떻게 해야 독립적으로 DB값을 가지게 할 수 있나요? @Transactional 쓰는 rollback된다고 얼핏 들은 거 같은데 잘 모르겠네요.. 2.실제 h2 DB에는 유저가 2명이 저장이 되어 있는데 테스트환경에서는 0명인 이유는 @SpringBootTest 어노테이션이 실제 실행환경과 완전히 독립된 환경을 만들어 주어서 그런 건가요? 감사드립니다.
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
root-context.xml hikari쪽 문제입니다.
<property name=“jdbcUrl" value="jdbc:mysql://localhost:3306/com?serverTimezone=UTC"/>이 부분의 property name을 발견할 수 없다고빨간 엑스가 떠서요 pom.xml 이나 나머지는 다 pdf 내용대로 진행했는데 이유를 모르겠습니다.
-
미해결스프링 핵심 원리 - 고급편
@ControllerAdvice는 AOP 로 구현된것일까?
안녕하세요! 궁금한게 생겼습니다. AOP 라는 것은 방법론일까요? 아니면 CGLIB, JDK Proxy를 통해 기술 만들어진 것을 뜻할까요? @ControolerAdvice를 보면 관심사분리를 통한건 AOP 방법론이 맞는것같은데 구현한 방법은 Proxy가 아닙니다. 이럴 떄 어떠한 답을 내릴수있을까요? 감사합니다!
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
구글 드라이브
구글 드라이브 접속이 안되는데.. 무슨 문제가 있는건가요?
-
해결됨토비의 스프링 부트 - 이해와 원리
이번 강의 내용을 보고 스프링 컨테이너에 톰캣을 내장했다고 볼 수 있을까요?
안녕하세요 토비님 강의 재밌게 잘 듣고있습니다 :)흔히들 스프링부트는 톰캣을 스프링 애플리케이션 내에 내장 시켰다는 것에서 가장 큰 차이점을 두고 있는 것 같습니다.그렇다면 이번 강의 내용에서 서블릿 컨테이너 초기화 작업을 스프링 컨테이너 초기화 작업에 종속 시켰다는 점에서 위에서 언급한 톰캣을 스프링 컨테이너에 내장 시켰다고 볼 수 있을까요?만약에 제가 질문한 내용이 맞다면 기존에 스프링 부트 없이도 안내해주신 방법대로 내장시킬 수 있었을텐데 보편적으로 내장시키지 않고 분리 시켰을 때의 단점을 가져갔던 이유는 무엇 일까요?감사합니다.
-
해결됨스프링 시큐리티 OAuth2
Authorization Code 궁금증이 있습니다.
안녕하세요 선생님 강의 잘 듣고 있습니다 Authorization Code 요청하기 강의를 듣고 궁금한점이 생겨서 질문 올립니다 이번 강의의 핵심은 임시코드 발급하기 였습니다 클라이언트가 keyCloak 와 연동해서 어떻게 redirect uri 를 만들고 어떻게 요청을 하고 인증이 완료 되는것도 같이 해보았습니다 다만 저는 좀 궁금한게 선생님이 총 2개의 로그인 방식을 보여주셨다고 생각합니다 이 링크를 클릭했을때의 방식 다른 방식은 세션을 완전히 제거한 이 화면에서 로그인 하는 방식을 보여주셨습니다 여기선 궁금한건 이번강의 주제는 임시코드를 발급받는 Filter 에 대해서 공부중인데첫번째 스크린샷에서는 선생님이 말씀하신 대로 OAuth2AuthorizationRequestRedirectFilter 에서 잘 요청이 들어옵니다requset 가 "/oauth2/authorization"; 들어오기 떄문인데 두번쨰 스크린샷에서는 전혀 이 필터를 태우지 않습니다 저는 임시코드 발급이라고 하길래 지금 할려는 스크린샷 1 , 2 두 행동 모두가 임시코드를 발급받기 위한 행동으로 알고 있습니다 그런데 첫번째 스크린샷은 OAuth2AuthorizationRequestRedirectFilter 필터를 태우고 두번째 스크린샷은 OAuth2LoginAuthenticationFilter 이 필터를 태우고 있습니다 이 앞의 configure 강의에서도 요청 순서 말씀하시면서 OAuth2AuthorizationRequestRedirectFilter 가 먼저 요청을 받아서 임시코드를 받아오고 그 다음 OAuth2LoginAuthenticationFilter 가 진행된다 라고 하셔서 제가 지금 혼동이 오는거 같습니다. 앞의 부분에서 제가 놓친 부분이 있을까요 선생님?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
MYSQL DB NAME : 한글 데이터 삽입 오류
안녕하세요.웹페이지 혹은 INSERT로 NAME 컬럼에한글 텍스트를 입력하면에러가 발생합니다.(영문, 숫자 텍스트는 정상)이유를 알 수 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
서버 실행 오류 질문
안녕하세요.서버 실행 후, 이러한 에러 메시지가 발생하는데해결책을 알 수 있을까요?코드상 문제는 없어보이는데... 난해하네요.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
리눅스 mysql systemctl status 오류
sudo systemctl status mysqldUnit mysqld.service could not be found. 계속 시도해보는데 여기서 막히네요ㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ExceptionHandler
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]@ExceptionHandler 을 사용해도인터셉터의 postHandle는 실행이 안되는게 맞나요??로그에서는 postHandle을 건너뜁니다@ExceptionHandler을 사용하면 정상 흐름으로 바꿔주는걸로 이해했는데 postHandle을 건너뛰는건 맞는건가요 ??
-
미해결실전! 스프링 데이터 JPA
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. @Entity 의 역할을 영속성 컨텍스트에 Entity 넣기, @PersistenceContextContext 의 역할은 영속성 컨텍스트 데이터를 DB 에 넣기로 이해하면 될까요?2. return em.find(Member.class,id); 에서 id 값을 기준으로 해당되는 member 객체가 반환되는 걸로 이해했는데 맞을까요?3. update 는 구현이 따로 필요 없다고 하셨는데, public Member save(Member member) 에서 이 update 기능을 사용할 수 있어서 그런건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
em.persist의 예외처리는 어디서 처리해야하나요?
회원가입시 em.persist(member)를 실행하게 되면, 바로 DB에 SQL문이 날아가는게 아니라 2차 쓰기 지연때문에, 트랜잭션이 커밋될때 sql문이 날아가기 때문에, 메소드가 끝나는 시점에 db에 반영되는걸로 아는데, 그렇다면 만약 중복 ID가 이미 등록되어 있는 경우의 exception을 처리해주기 위해서 공통예외처리를 만들어주었다고 한다면, repository에서 exception을 던지는게 맞는지 아니면 service에서 exception을 던지는게 맞는지 궁금합니다.대신, 동시성 처리 문제현상때문에 validateDuplicateMember를 모두 통과했다는 가정하에 질문드립니다.
-
해결됨토비의 스프링 부트 - 이해와 원리
Selector의 역할이 무엇인지 궁금합니다.
안녕하세요 선생님 질문이 있습니다.현재 제가보고있는 commit은 "@ConditionalOnMissingBean을 이용한 커스톰 빈 설정 적용" 입니다.META-INF/spring/tobyspring.config.MyAutoConfiguration.imports여기에 적힌 TomcatWebServerConfig에서 @Configuration을 지워도 메소드에 @Bean만 있으면 tomcat이 잘 실행이되는것을 확인했습니다.아예 @Bean까지 다 지우면 jetty dependency도 없으니 기동을 실패하는것을 확인했습니다.이때 jetty dependency를 추가하면 jetty로 기동하는것도 확인하였습니다. Selector가 JettyWebServerConfig , TomcatWebServerConfig를 load 할때 jetty dependency가 없으면 알아서 메소드 호출을 안하고 있으면 호출해주는것인가요?imports에 적힌 클래스들을 load하게 되면 어떻게 되는지 잘이해가 가지를 않습니다...