묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
빈 충돌,중복
강의 중에 빈충돌로 인한 코드를 잡는데 주석처리를 해도 잡히지가 않네요 강의에서는 잡혔는데 저는 왜 안잡히고 @Primary,@Qualifier 를 사용하라 하나요?memoryMemberRepository와 memberRepository라는 두 개의 MemberRepository 빈이 발견되었다는 오류가 뜹니다.
-
미해결
ec2 스프링 https 적용 (feat. 도메인 적용)
안녕하세요 웹 프로젝트 진행 중 궁금한 점이 생겨 질문드립니다.react와 spring으로 개발을 진행하였고 둘다 ci/cd 적용을 해서 배포를 해둔 상태입니다! 문제상황프론트는 도메인을 구입하여 https가 적용된 상태벡엔드는 Ec2에서 돌아가고 있어 탄력적 ip만 사용하여 http만 적용해결방법프론트 도메인이 xxx.com이고 도메인을 하나 더 구입하여(xxx.net) 서버가 돌고 있는 ec2와 연결해 aws acm을 사용해 https가 적용되도록 하였습니다.궁금한 점프로젝트가 끝난 후 찾아보니 xxx.com(프론트 도메인)에 서브 도메인을 등록하여서 백엔드 로드벨런서를 적용하면 api.xxx.com을 백엔드 도메인으로 사용이 가능한 것으로 이해했는데 맞을까요?서브 도메인 말고 하나의 도메인으로 프론트와 백엔드를 처리하는 방법이 있을까요?실제로 많이 사용하는 서버가 올라가져 있는 ec2에 https를 적용하는 방법은 무엇인지 궁금합니다
-
해결됨
스프링 입문(view 환경설정) 에서 Thymeleaf 적용안됨
안녕하십니까 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣고 있는 수강생입니다. IntelliJ IDEA에서 Thymeleaf 문법이 정상적으로 적용되면 Thymeleaf 표현식은 주황색으로 강조 표시되는것으로 알고 있는데 이렇게 표시되는 이유가 뭔가요?? build.gradlecontroller
-
미해결
Spring Framework 강의중 IntelliJ - maven조합 추천좀 해주세요
안녕하세요현재 국비학원에서 스프링프레임워크를 듣는 수강생인데요너무 날라치기로 mvc패턴까지 알려주고 계셔서 , 나름 개인공부를 하고자 인프런에서 강의구매를 하려고 합니다 우선 스프링은 지금 처음 만져본거고boot는 추후에 결제해서 볼꺼구요.프페임워크에 대한 수강을 듣고싶어요그리고 제가 m1맥북을 쓰는데 원래 학생혜택으로 인텔리제이 울티를 쓰고있어서자바수업때부터 계속 인텔리제이를 썼는데요학원에선 이클립스로 수업진행을 하다보니 환경구축하는게 어렵더라구요..어디서 어디까지가 구축인지도 모르겠고STS3 다운받았더니 계속 오류에 이클립스도 햇더니 오류가 계속 나서어쩔 수 없이 인텔리제이로 해야할 것 같아요 . 괜찮은 수업 아시는분 계시면 추천 부탁드립니다ㅜㅜ
-
미해결
스프링 테스트에서 embedded redis 사용할 때 뜨는 로그..
[lettuce-nioEventLoop-6-1] INFO io.lettuce.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:394) SocketChannelImpl.java:394 at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:426) SocketChannelImpl.java:426 at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:254) PooledByteBuf.java:254 at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) AbstractByteBuf.java:1132 at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357) NioSocketChannel.java:357 at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) AbstractNioByteChannel.java:151 at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) NioEventLoop.java:788 at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) NioEventLoop.java:724 at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) NioEventLoop.java:650 at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) NioEventLoop.java:562 at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) SingleThreadEventExecutor.java:997 at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ThreadExecutorMap.java:74 at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) FastThreadLocalRunnable.java:30 at java.base/java.lang.Thread.run(Thread.java:840) 스프링 테스트에서 embedded redis를 사용해 테스트하던 중에 이런 로그가 뜨네요...에러는 아닌 것 같은데 정확히 뭘 하라는 건지 모르겠어요 ㅠㅠ저 문구를 어떻게 하면 없앨 수 있을까요?....
-
미해결
김영한 스프링 한번에 구매시
안녕하세요김영한 선생님의 스프링 한번에 구매시 블프25%할인이 들어가는데묶음 구매시 추가20%쿠폰은 추가할인은 안되는건가요??추가 할인은 어려운지 확인 부탁드리겠습니다
-
미해결
스프링으로 웹 배포 중 404 오류
스프링으로 프로젝트를 만들고 카페24로 저렴하게 호스팅을 하려고 합니다.그래서 스프링으로 war파일을 만든 뒤, 해당 파일을 경로에 넣어 ROOT 디렉토리가 생겼습니다. 경로에 index.html 등을 넣으면 서버에 연결되는 것을 확인 하였으나,에 html이 있으면 404가 뜹니다. 구글링을 한 결과로는 정적 리소스는 WEB-INF 하위에 있으면 서버가 접근을 못한다고 하였는데,저는 thymeleaf 템플릿을 이용하여 작성했기에 templates에 있으면 접근해야하는 것이 아닌지 의문입니다. 로컬에서는 문제없이 돌아가는 것을 보아 컨트롤러의 매핑 문제 혹은 index.html등의 파일 부재는 아니라 생각합니다. 어떻게 해결하면 좋을까요 ?
-
미해결
트랜잭션 전파 속성 REQUIRES_NEW 관련 질문
안녕하세요 트랜잭션 관련해서 질문이 있어서 글을 남깁니다.트랜잭션매니저 2개(Jpatxmanager, datasourcetxamanger)를 만들어서 테스트 중입니다. 1개는 전반적인 일반 비지니스 로직에 적용되는 트랜잭션 매니저이고, 다른 1개는 API 호출시 관련 데이터를 DB에 저장하는 로직에 사용되는 트랜잭션 매니저입니다.파일에 다음과 같이 선언 되어있습니다. //로그 저장 하는 메소드 호출시 관리하는 트랜잭션매니저 <bean id="logTxManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="egov.dataSource"/> </bean> <tx:advice id="logTxAdvice" transaction-manager="logTxManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRES_NEW" rollback-for="Exception"/> </tx:attributes> </tx:advice> ... aop config 생략 //JPA트랜잭션매니저를 커스터마이징 한 트랜잭션매니저 <bean id="nbpmTxManager" class="com.nkia.itg.nbpm.common.NbpmTransactionManager" /> <tx:advice id="nbpmTxAdvice" transaction-manager="nbpmTxManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" /> </tx:attributes> </tx:advice> 실행 순서는 다음과 같습니다.1. A라는 비지니스 로직이 실행된다(A 트랜잭션매니저, 트랜잭션 전파 : REQUIRES)2. B라는 로직(API 관련 데이터 저장)이 실행된다(B 트랜잭션매니저, 트랜잭션 전파 : REQUIRES_NEW)제가 기대한 바로는 API 데이터 저장 메소드가 호출되면 새로운 db 커넥션을 획득해서 별도의 트랜잭션으로 관리 되는 것이었는데, 테스트를 해보니까 같은 커넥션을 공유하는것같습니다. A라는 비지니스 로직이 실패해서 예외가 발생해도 API관련 데이터 저장 로직에 영향을 주지 않기 위해서 별도로 분리하려고합니다.제가 한 테스트 결과는, A 비지니스 로직(특정 테이블에 데이터 INSERT) 호출 하고 B라는 비지니스 로직(API 데이터 INSERT) 호출 후 B 메소드가 종료되고 COMMIT을 하면 A 로직에서 INSERT한 데이터도 COMMIT이 됩니다. 즉, REQUIRES_NEW 전파속성이 실행되지않는것같습니다.예시)finally { B();}원인은 도저히 모르겠습니다 .. 답변 부탁드립니다.
-
해결됨
react-spring 파일 업로드/ react에서 이미지 뷰(jwt)
개인 프로젝트로 블로그 만들기를 구현하는 중입니다.모든 프로젝트에 대한 설명은 할 수 없지만, 보안으로 jwt token을 사용하고있고, multipartfile을 통해서 게시글 내에 이미지, 영상, 기타 파일 등을 함께 첨부하여 게시글을 작성할 수 있도록 기능을 구현하였습니다.파일 업로드 단계까진 잘 되었고, 우선 로컬 저장소를 사용하여 파일은 스프링 부트 프로젝트 내 resources/static/ ~ 이하 이미지:img, 영상:video, 기타 파일:file 로 세부 디렉토리를 나눠서 접근하도록 하였습니다. 우선 사진으로만 테스트 해보는 중인데, 리액트에서 파일을 보여주는 데에 어려움을 겪고있습니다.export const getImageApi = async (token: string | null, imageName: string) => { const url = `http://localhost:4000/api/images/${imageName}.jpg`; try { const response = await axios.get(url, { headers: { Authorization: `Bearer ${token}`, }, }); const result = response.data; return result; } catch (error) { console.error("Error fetching board data:", error); return null; } };토큰을 이용해야만 파일에 접근이 가능하기에, 이런식으로 따로 api를 설정하고 접근하는 방식으로 해보려고 하는데 제 생각처럼 잘 되지 않습니다. 해당 api를 통한 요청을 포스트맨으로 조회해보니 이진화 된 파일이 응답으로 나오곤 하는데, 이를 다시 원본으로 복구한 후에 보여줘야하는 것 같은데,, 아직 많이 부족해서 어떤식으로 해야할지 잘 모르겠습니다. 리액트 - 스프링(부트)를 사용하면서 파일 업로드/다운로드(조회)를 할 때, 이런 방식을 사용하는 것이 바람직한 것인지, 단순히 사진을 업로드 하고 조회할 때에 이정도 복잡한 수준으로 구현하는 것이 일반적인 것인지 궁금하고 더 간단하거나 쉽게 할 수 있는 방법이 있다면 알려주시면 감사하겠습니다. 첫 질문이라 소스코드를 많이 올리는 것이 번잡할까 싶어 많이 올려두지 않았습니다. 혹시 도움을 주실 때 관련 소스코드를 필요로 하신다면 보내드리도록 하겠습니다. 감사합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
DatasourceManager와 JpaTransactionManager 혼용
안녕하세요 강의를 듣다가 궁금한것이 생겨서 질문 남깁니다.강의 중간에 영한님께서, DatasourceManager와 JpaTransactionManager 를 함께 사용 하는 경우, JpaTransactionManager를 등록한다고 하셨고 그 이유에 대해서는 JpaTransactionManager가 DatasourceTransactionManager가 제공하는 기능의 대부분을 지원한다고 하셨습니다.현재 개발 중인 프로젝트에서 myBatis와 JPA 두 가지를 사용하고 있어서 위 두 개의 트랜잭션 매니저를 사용 하고 있는데, 각 다른 트랜잭션 이 서로 호출하게 되면 Transaction Conflict 라는 에러가 발생해서 현재 말씀하셨던것 처럼 JpaTransactionManager 하나로 사용하려 합니다.영한님께서는 대부분의 기능을 지원 한다고 하셨는데, 그렇다면 혹시 그 일부 지원하지 않는 기능에는 예를 들어 어떤 것들이 있을 수 있고, 혹시 발생 가능성이 있는 잠재적인 이슈가 있는지 궁금해서 질문을 남깁니다.감사합니다
-
미해결
ec2재부팅 후 ec2 주소 접근 불가능 !!!!! (스프링 배포)
https://velog.io/@dasd412/ec2-%EC%9E%AC%EB%B6%80%ED%8C%85-%ED%9B%84-%EC%97%B0%EA%B2%B0-%EB%B6%88%EA%B0%80-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0이걸 참고해도 보안 다시 해도 전 여전히 안되더라구요.. 결론적으로 배포를 성공했고 배포한 주소가 회원가입에 접근을 못해서 시큐리티 설정 때문에 그런줄 알았는데 여기서 멈췄어야 했나봅니다..로컬에서는 되고 ec2주소로는 접속이 안되어서 찾아보던 중 ec2를 재부팅 하면 해결된다고 해서 따라 했더니https://github.com/jojoldu/freelec-springboot2-webservice/issues/485 이제는 아예 ec2주소에 접근이 불가능합니다 ㅠㅠㅠㅠㅠ 이걸 해결해야 하는데 어떡하나요..
-
미해결
Datasource와 JPA를 같이 사용 할 경우 트랜잭션매니저
안녕하세요 스프링 데이터 접근 기본 1편 에 강의 내용 중 JpaTransactionManager와 DatasourceTransactionManager를 같이 사용할 경우 JpaTransactionManager 를 사용하면 된다고 하셨는데 관련해서 궁금한 것이있습니다. Jpa와 myBatis를 같이 사용 할 경우 반드시 JpaTransactionManager를 사용해야 하는지 궁금합니다. 현재 JBPM 이라는 오픈소스를 근간으로 하는 솔루션을 개발 중인데 해당 오픈소스 엔진영역은 JPA를 사용하고 나머지 Service class에는 myBatis를 사용 중입니다. 현재 직면하고있는 문제는 일반 서비스 클래스에서 DatasourceTransactionManager로 트랜잭션이 이어지는 중에 JpaTransactionManager를 사용하고 있는 클래스를 호출 하게 되면 JpaTransactionManager 의 getTransaction() 메서드에서 unable to begin transaction 이라는 에러가 발생합니다. 현재 AOP 로 일괄적으로 2개의 트랜잭션매니저를 사용 하고 있는데, AOP DatasourceTransactionManager 를 주석 처리 하니까 에러가 발생하지 않습니다. 2개의 트랜잭션매니저를 사용해서 발생하는 문제 일까요? 그렇다면 JpaTransactionManager 하나만 사용하면 될까요 ?영한님 께서 트랜잭션이 시작되면 TransactionManager에서 커넥션을 생성하고 쓰레드로컬에 해당 커넥션을 저장한다고 하셨는데, 2개의 트랜잭션 매니저를 사용해서, A 라는 트랜잭션매니저를 사용하고있는 메서드에서 B라는 트랜잭션매니저를 사용하는 메서드를 호출하면, 2개의 커넥션이 생성되는 것인가요 ?
-
해결됨
김영한 스프링 DB-2 Test/resources 폴더
안녕하세요 김영한님 스프링 db2강의를 듣는중 강사님께서 올려주신 프로젝트에는 보시는것처럼 test / resources 파일이 있어 test에서 application.properties파일에 접근할 수 있습니다.강의에서 배운내용을 적용하기위해 새로 플젝을까서 공부하고있는데 보시는것과같이 resources폴더가 없더라구요. 이런경우엔 어떻게 해결하면될까요
-
미해결
h2 database 실행 오류
'스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB접근 기술' 수강자입니다.섹션 6번 스프링 DB접근 기술 첫 강의에서 h2 database 실행이 안됩니다. OS: Windows11H2 databse: 2.1.214ver All Platform이렇게 사용하는데 압축 푼 폴더를 ~/study/h2 에 위치시키고 bin폴더에서 h2.sh 파일 실행이 안됩니다. bash창 열어서 권한을 보면-rwxr-xr-x 1 hongsj 1049089 109 Apr 11 09:01 h2.sh*라고 뜨고, ./h2.sh 명령어나 더블 클릭으로 실행하면 bash창이 잠깐 켜졌다가 아무런 문구도 없이 금방 사라집니다. 어떻게 진행하나요..? h2.bat, h2w.bat 파일들도 cmd창이 잠시 열렸다가 아무런 문구도 없이 사라집니다.
-
미해결
글로벌 getValidator 적용 문의
안녕하세요 수업중에 글로벌 validator를 등록하는 소스를 보여주셨는데요.궁금한 게 있어 질문 드립니다. @SpringBootApplication public class ItemServiceApplication implements WebMvcConfigurer { public static void main(String[] args) { SpringApplication.run(ItemServiceApplication.class, args); } @Override public Validator getValidator() { return new ItemValidator(); } }글로벌 적용 시 사용하는 WebMvcConfigurer를 들어가봐도 반환 타입이 Validator[]는 없고 Validator만 존재하는데, 여러 개의 validator를 등록이 가능할까요?아래는 컨트롤러에 적용하는 소스인데 여기는 함수를 까보니 여러 개의 인자를 받을 수 있도록 되어 있더라구요. @InitBinder public void init(WebDataBinder dataBinder) { //dataBinder.addValidators(itemValidator); dataBinder.addValidators(itemValidator, memberValidator, storeValidator); }글로벌 적용은 복수개의 validator를 어떻게 적용할 수 있을까요?
-
미해결
스프링 입문 질문드립니다.
이번에 취업하게 된 신입 개발자 입니다.회사에서 스프링/VUE를 사용하고있습니다. 자바를 공부하고있었는데 스프링에 대해선 아무것도 모릅니다. 보니깐 저희 회사는 maven? 을 사용하고있습니다. 혹시 스프링 공부하기 위한 책 과 인프런에서 봐야할 강의를 각각 추천 부탁드립니다. 그리고 강의보면 gradle 로 설정해서 강의 하는 부분이 많은 거같은데 강의보는데 지장이 있을까요? 여러분의 도움이 필요합니다.
-
미해결
김영한님의 스프링강의 로드맵을 전체 구매하고싶은데 묶음으로 구매할 수 있나요 ??
로드맵 전체 구매 버튼이 따로 없어서 질문합니다.김영한님의 스프링강의 로드맵을 전체 구매하고싶은데 묶음으로 구매할 수 있나요 ??없다면 강의를 개별적으로 하나씩 구매해야할까요 ??
-
미해결
백엔드 개발자 커리큘럼이 어떻게 되나요?? (인프런강의)
강의가 다양해서 어느 순서로 공부해야하는지 잘 모르겠습니다.인프런 내에서 들을 수 있는 강의로 커리큘럼을 짜주세요.혼자서 개인프로젝트 만들 수 있는 수준으로 커리큘럼 짜고 싶습니다.
-
해결됨
외부 api 호출하는 클래스 이름은 보통 뭐라고 짓나요?
오픈뱅킹 api 호출해서 입금하거나 결과 확인하거나 이런 기능을 수행하는 클래스 이름을 그냥 OpenbankingService라 했는데 이게 좀… 더 나은 이름이 없을까 싶어서 질문 드립니다. OpenbankingApi라고 하는게 나으려나요?
-
미해결
스프링 ComponentScan 관련 질문
안녕하세요 초급개발자입니다.최근 전자정부표준프레임워크 기반으로 개발된 어떤 소스를 보면서 componentScan에 관해 궁금한것이있었습니다.우선, WEB-INF 아래의 dispatcher-servlet.xml에 명시되어있는 componentScan에는 Controller가 include 되어있고, service와 repository가 exclude 되어있습니다.<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>제가 알기로는 controller, service, repository 어노테이션에는 component 어노테이션이 포함되어있어서 component scan시 전부 bean으로 올리는 것으로 알고있는데 저렇게 exclude를 해놓으면 빈으로 등록이 안되는것 아닌가요 ?basepackage는 최상위 디렉터리가 맞습니다. 또한, web.xml에 명시되어있는 다른 설정 xml파일도 있는데(context-common.xml) 이 파일에도 componenScan이 있습니다.basepackage는 dispatcher-servlet에 명시되어있는 값과 같고, exclude filter로 컨트롤러는 빈 으로 올리지 않는다고 되어있습니다. 그리고 default filter는 따로 설정 해놓지 않아서 default 값인 true로 되어있기 때문에 기본 어노테이션(서비스, 레포지토리)는 빈으로 올린다고 알고 있습니다.<context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/> 결론으로는 두 개의 컴포넌트 스캔(dispatcher-servlet.xml, context-common.xml)의 스캔 조건이 상반되게 되어있는데, 왜 그런지 이유가 궁금합니다 ....