inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

Book.java Kotlin으로 변경 후 오류 문의

미해결

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

안녕하세요. 12강 에서 처럼 Book.java를 Book.kt kotlin 코드로 변경하고 나서 테스트코드 수행하면 아래와 같은 오류가 발생합니다. 확인해야 될 사항이 뭐가 있을까요. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookRepository' defined in com.group.libraryapp.domain.book.BookRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.group.librayapp.domain.book.Book

  • java
  • spring
  • kotlin
  • spring-boot
  • refactoring
jipps 댓글 4 좋아요 1 조회수 746

addlogouthandler에서요 ~

미해결

스프링 시큐리티

안녕하세요 선생님 !! addlogouthandler여기서 세션무효화, 토큰 삭제 외에 추가작업을 한다고 하셨는데 여기서 제가 만들 핸들러를 집어넣으면 1)세션 무효화 ,토큰 삭제 + 알파로 제가 만든 기능이 추가된다는 건가요?? 2)그냥 제가 만든 기능만 추가된다는 것인가요?? 그래서 따로 무효화와 토큰을 구현해줘야 한다는 ....? 1번과 2번중에 어떤거죠??

  • Spring Security
  • spring-boot
  • java
youjin_419 댓글 1 좋아요 0 조회수 292

M1 mac 에서 gradle로 빌드하시려는 분들께 공유 하고싶어 글을 남겨요!

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

Requirements static/node_module로 package.json에 선언된 의존성을 다운로드 받아야한다 gradle build 시 package.json에 선언된 의존성을 확인하고 다시 다운로드 받아야 한다. 뭔가 간단하게 끝내고 싶다 !!! Action https://github.com/node-gradle/gradle-node-plugin/blob/master/docs/usage.md 다양한 관련 플러그인 들이 있지만, 위의 플러그인을 설치 했습니다. 2번의 요구사항은 gradle의 증분 컴파일(?)이 해주는 것 같습니다. (정확하지 않음 추측이에요) 3번은 관련 자료를 찾던 도중 processResources 를 발견했고, Copies production resources into the production resources directory. 라고 설명 되어 있습니다.(공식 홈페이지) 따라서, npm install 시 node_module 파일을 static 이하로 떨어 뜨리면 되겠구나! 그리고 processResources를 "npm install 동작을하는 " Task를 의존하게 하면 되겠구나! -- 주석이 많아 가독성이 떨어지지만, 한번 읽어보시면 더 도움이 될거라 생각해서 위의 깃헙에 있는 주석 그대로 복사 붙여넣기 합니다. 수정한 부분은 nodeProjectDir 부분과processResources.dependsOn 부분 입니다. 추가로 package.json 도 아래분이 잘 정리 해주셔서 함께 복사 붙여넣기 합니다.(고맙습니다!!) -인텔리제이 빌드시(gradle로 설정안했을 경우 동작안해요!) -gradle 탭 누르셔서 npm Task 들어오는지 확인해주세요! { "name": "static", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "@yaireo/tagify": "^3.5.1", "bootstrap": "^4.4.1", "cropper": "^4.1.0", "font-awesome": "^4.7.0", "jdenticon": "^2.2.0", "jquery": "^3.4.1", "jquery-cropper": "^1.0.1", "mark.js": "^8.11.1", "moment": "^2.24.0", "summernote": "^0.8.16" } } plugins { id "com.github.node-gradle.node" version "3.5.0" id 'org.springframework.boot' version '2.7.5' id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'java' } group = 'me.studyOlle' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } node { // Whether to download and install a specific Node.js version or not // If false, it will use the globally installed Node.js // If true, it will download node using above parameters // Note that npm is bundled with Node.js download = true // Version of node to download and install (only used if download is true) // It will be unpacked in the workDir version = "16.14.0" // Version of npm to use // If specified, installs it in the npmWorkDir // If empty, the plugin will use the npm command bundled with Node.js npmVersion = "" // Version of Yarn to use // Any Yarn task first installs Yarn in the yarnWorkDir // It uses the specified version if defined and the latest version otherwise (by default) yarnVersion = "" // Base URL for fetching node distributions // Only used if download is true // Change it if you want to use a mirror // Or set to null if you want to add the repository on your own. distBaseUrl = "https://nodejs.org/dist" // Specifies whether it is acceptable to communicate with the Node.js repository over an insecure HTTP connection. // Only used if download is true // Change it to true if you use a mirror that uses HTTP rather than HTTPS // Or set to null if you want to use Gradle's default behaviour. allowInsecureProtocol = null // The npm command executed by the npmInstall task // By default it is install but it can be changed to ci npmInstallCommand = "install" // The directory where Node.js is unpacked (when download is true) workDir = file("${project.projectDir}/.gradle/nodejs") // The directory where npm is installed (when a specific version is defined) npmWorkDir = file("${project.projectDir}/.gradle/npm") // The directory where yarn is installed (when a Yarn task is used) yarnWorkDir = file("${project.projectDir}/.gradle/yarn") // The Node.js project directory location // This is where the package.json file and node_modules directory are located // By default it is at the root of the current project nodeProjectDir = file("${project.projectDir}/src/main/resources/static") // Whether the plugin automatically should add the proxy configuration to npm and yarn commands // according the proxy configuration defined for Gradle // Disable this option if you want to configure the proxy for npm or yarn on your own // (in the .npmrc file for instance) nodeProxySettings = ProxySettings.SMART } dependencies { // View Template Engine implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' // Security implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' //Web implementation 'org.springframework.boot:spring-boot-starter-mail' implementation 'org.springframework.boot:spring-boot-starter-web' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.7.5' //Persistence implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' runtimeOnly 'com.mysql:mysql-connector-j' // LomBok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // Dev developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' //Test Implementation testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' } tasks.named('test') { useJUnitPlatform() } processResources.dependsOn('npmInstall')

  • gradle
  • node
  • JPA
  • spring
  • npm
  • spring-boot
  • thymeleaf
  • java
asdf 댓글 1 좋아요 1 조회수 1633

redis를 단순히 락 용도로 사용하지 않고..

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

redis를 단순히 락 용도로 사용하지 않고 redis에 재고수량을 저장 후 관리하는 방법도 사용하는 걸로 알고 있는데요. 이런 방법은 별로인가요?

  • 동시성
  • spring
  • java
hwajo0 댓글 1 좋아요 0 조회수 383

다이나믹 프록시에서 리플렉션이 어떻게 사용되는거죠?

미해결

더 자바, 코드를 조작하는 다양한 방법

ParentInterface parentInterface = (ParentInterface)Proxy.newProxyInstance(HelloApplication.class.getClassLoader(), new Class[]{ParentInterface.class}, (proxy, method, args) -> { System.out.println("메소드 수행전에 할일"); Object methodResult = method.invoke(new ChildClass(), args);//child라는 class에 args를 모두 넘긴다 if(method.getName() == "sayHello"){//메서드 이름에 따라.. 처리를 분류할 수 있으니 다 정의하지 않아도됨 모든 메서드에 대해 기본적으로 정의되는거니까 중복도 피할 수 있음 System.out.println("sayHello!"); return methodResult; } System.out.println("sayOne!"); return methodResult; }); parentInterface.sayHello(); //클라이언트는 인터페이스타입에 대해 그 메서드를 호출한다 이 인터페이스에 대한 메서드를 호출하면 위에서 정의한대로 프록스 객체를 런타임에 하나 만들어줘서 //위에서 정의한 대로의 로직을 타고 클라이언트에게 결과를 전송해준다 parentInterface.sayOne(); 지금 인터페이스에 대한 .class정보를 넘겨주고 있어요 그리고 Proxy.newProxyInstance메서드로 들어가보면 넘겨준 class정보를 가지고 생성자를 만든다거나 하는것같거든요 그런거 자체가 리플렉션을 활용하는 행위인가요? (class이름).class <- 이표현자체는 리플렉션을 활용하는 문장인가요? cglib, 바이트 버디는 리플렉션을 사용하지 않나요?

  • java
  • JPA
  • spring
jjc5524 댓글 1 좋아요 0 조회수 494

Scheduler scheduler = null 굳이 하는 이유가 있나요

미해결

Do it! 자바 프로그래밍 입문 with 은종쌤

SchedulerTest클래스에서 왜 굳이 Scheduler scheduler = null 을 적어주나요 Scheduler scheduler; 해도 될거같은데 이유가 있나요?

  • java
Ref 댓글 0 좋아요 1 조회수 345

코딩테스트 누락 문의

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

안녕하세요. 강의 매우 유익하게 잘 듣고 있습니다. 문제 푸는 도중 하기 문제가 누락되 공유 합니다. 7강 : 8번밖에 없음 8강 : 4번, 6번, 9번, 15번 9강 : 5번, 8번 누락인데 언제 개선 될까요?

  • 코테 준비 같이 해요!
  • java
댓글 1 좋아요 0 조회수 358

변수명 일괄변경

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

변수명 일괄 변경을 위해 shift+enter , shift+f6 둘다 아무 반응이 없습니다...ㅠㅠㅠㅠㅠㅠ...맥북입니다

  • MVC
  • java
  • spring-boot
  • spring
jin 댓글 1 좋아요 0 조회수 579

javaFX 이 오류는 어떻게 해결해야 하나요?

미해결

Scenebuilder로 fxml파일 만들어서 실행시키니까 이 에러가 뜨네요 빌드패스에 javaFX 라이브러리 유저라이브러리로 생성해서 JavaFX SDK파일 jar 다 불러왔고 Run => VM arguments 에도 --module-path "C:\Program Files\Java\javafx-sdk-19" --add-modules=javafx.controls,javafx.fxml 이렇게 붙여넣는데도 해결이 안됩니다.. 도와주세요

  • JavaFX
  • fxml
  • java
  • error
  • fatalerror
  • 자바
  • 자바fx
안준렬 댓글 0 좋아요 0 조회수 571

부모클래스 변수로 자식클래스 인스턴스 받기

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강사님은 MemberRepository memberRepository = new MemoryMemberRepository(); 또는 List<Member> result = new ArrayList<>(); 와 같이 인스턴스를 받는 변수의 class 타입을 부모 클래스로 하시는데 이건 특별한 이유가 있는건가요? 아니면 코딩 스타일상 선호해서 부모 클래스 변수를 사용하시나요?

  • spring
  • spring-boot
  • java
  • MVC
Song HyungSeon 댓글 1 좋아요 0 조회수 322

repository 작성 시 , spring-data-jpa 의 jpaRepository 와 persistence manager 객체 주입의 선택 기준

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

질문 : 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 안녕하세요. 선생님 이번 강의에 spring-data-jpa 의 jpa repository 를 사용하지 않고 EntityManager 를 주입받아 repository 를 사용 하는 이유는 학습의 목표가 jpa 의 동작을 더 잘 이해하기 위함이라고 들엇습니다.( 출처 : https://www.inflearn.com/questions/549972 ) 그러면 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 하나의 트랜잭션의 명령을 길게 여러개 쓰고 싶으면 jpa repository 의 함수를 직접 작성한다라고 이해해도 될까요 ?

  • jpa
  • java
  • spring-data-jpa
  • 웹앱
  • java
  • spring
  • spring-boot
  • spring
  • JPA
dankim 댓글 1 좋아요 5 조회수 1812

JPA 테스트하는 과정에서 질문드립니다!

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

JPA 강의 17:36에서 콘솔 창에 values 값으로 null 이 들어가게 되는데, 제 출력 화면에는 default 값이 나옵니다. 문제 없는 결과일까요??

  • jpa
  • java
  • spring-boot
  • MVC
  • spring
재영 댓글 2 좋아요 3 조회수 418

json column type 문의

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

실 사용중에 질문이 있어서 문의드립니다. db column 타입이 json으로된 컬럼의 경우 querydsl 사용시에 해당컬럼을 where절에 사용하는 방법이 없을까요? .like , .eq 기능을 사용하고 싶은데 잘안되네요

  • JPA
  • java
ziro0914 댓글 2 좋아요 0 조회수 821

@RequestParam("name")

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MVC 강의를 듣다가 궁금한 부분이 생겨서 질문남깁니다. public String helloMvc(@RequestParam("name") String name, Model model) 에서 @RequestParam("name")를 없애고 서버를 켰습니다. 그랫더니 이렇게 화면이 나오는데요. @RequestParam("name")가 없어도 파라미터를 잘 넘겨받는 것 처럼 보이는데, 이게 왜 필요한 건가요? 단순히 requried=true를 강제하기 위해 사용하는 건가요?

  • mvc
  • spring
  • spring-boot
  • MVC
  • java
Song HyungSeon 댓글 1 좋아요 3 조회수 703

도메인이라는게 정확히 무엇인가요 ??

미해결

스프링 핵심 원리 - 기본편

여기서 말하는 도메인과, 나중에 package로 만드는 domain은 같은 의미인가요 ??? 도메인이 정확히 무엇인지 안와닿아서 알려주시면 감사하겠습니다 !

  • java
  • spring
  • oop
  • spring
  • domain
팡휘 댓글 1 좋아요 3 조회수 907

지금 java 버전이 더 올라갔는데 그럼 수정해야하나요?

미해결

스프링 핵심 원리 - 기본편

java 버전이 지금 2.7.4인데 수업을 2.3.3때 찍으셨는데 그럼 build.gradle에서 수정하고 refresh 눌러줘야하나요?? 저번에 버전 안맞아서 오류났던적이 있어서 질문드려봅니다

  • java
  • spring
  • oop
  • spring
팡휘 댓글 1 좋아요 0 조회수 900

libs파일이 없네요...

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 내용] gradle환경 만드는 과정에서 말씀해주신 대로 윈도우 환경에서 gradle.build를 하여서 build successful이 나왔는데, 자꾸 cd build에 있는 libs파일이 없다고 나오네요. 실제로 들어가보니 libs파일이 없는데 재 설치해도 마찬가지입니다. 환경변수 모두 java11로 되어있고 모든 setting이 java11로 되어있는데도 에러가 나니, 다음 과정으로 넘어갈 수가 없네요..

  • MVC
  • spring
  • java
  • spring-boot
minsubrother 댓글 1 좋아요 1 조회수 1073

2) 필터 초기화와 다중 보안 설정 강좌

해결됨

스프링 시큐리티

WebSecurityConfigurerAdapter가 deparcated된 후 SecurityFilterChain을 빈으로 등록하여 사용중인데, @Order를 사용하지 않아도 두 개의 SecurityConfig 클래스가 충돌이 나지는 않습니다. 그런데 순서를 명시적으로 보장하기 위하여 @Order를 사용해도 원하는 순서대로 등록이 되지 않고 클래스 이름의 오름차순으로 먼저 호출되어 Bean으로 등록 됩니다. 이렇게 하는 것이 좋은 방법은 아닌 거 같아 여쭤봅니다. 다른 방법이 있을까요?

  • spring-boot
  • Spring Security
  • java
정성훈 댓글 2 좋아요 0 조회수 429

송아지 문제

해결됨

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

혹시 송아지 문제에서 한 번의 점프로 앞으로 1, 뒤로 1 가게 하고 점프 없이 앞으로 5를 갈 수 있다고 한다면 어떻게 해야 하나요? 클래스 Point 를 만들지 않고 푸는 방법이 궁금합니다.

  • java
  • 코테 준비 같이 해요!
lusate 댓글 1 좋아요 0 조회수 224

문제 관련해서 잘못된 부분이 있습니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

전 항상 강의 듣기전 설명, 입력, 출력만 보고 시간이 얾마나 걸리던 풀고 강의를 보는데, 입력 란에 첫 줄에 길이 100을 넘지 않는 '공백이 없는 문자열이 주어집니다.' 라고 되어있어서 당연하게 next()를 사용했는데, 아무리 채점사이트 돌려봐도 오답이라길래 찾다 찾다 못 찾아서 보니, 바로 nextLine()을 사용하셨네요ㅠㅠ 결론은 공백이 있는 문자열이 존재합니다.. 부디 이걸보고 저 같은분 없길 바라며 남겨봅니다.

  • 코테 준비 같이 해요!
  • java
azsx1001202 댓글 1 좋아요 3 조회수 432

인기 태그

인프런 TOP Writers

주간 인기글