49,500원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
@Component
안녕하세요 또 이렇게 질문을 드리네요공통 개발 - 인터셉터에서 AdminInterceptor은 @Component을 사용합니다. 제가 자료를 찾아봤는데 개념 이해가 어렵더라구요개발자가 직접 작성한 class를 Bean으로 등록하기 위한 어노테이션이라고 정의 되어 있던데 그럼 Bean은 또 뭔지 찾아봤어요자바 객체를 스프링에서는 Bean이라고 한다. 라고 정의 되었더라구요. 객체는 뭐 재료를 합쳐서 사용자가 사용할 수 있겠끔 만들어진 거가 객체인건 알고 있고 ....다시 정리하면 직접 작성한 class를 객체화 시키려는건가라고 좀 애매하게 이해했는데 이건 또 아닌거 같고.. 예제를 본다면 class InlineExamConsole{ @Autowired public void setExam(Exam exam) { this.exam = exam; }}이 클레스면 xml은<context:annotation-config/><bean id = "exam" class="entity.NewlecExam" /><bean id = "console" class="ui.InlineExamConsole"></bean>로 되어야 하고...IoC 컨테이너의 상황은exam: Exam<---- console:InlineExamCode처럼 플로우가 될꺼구...그런데 <context:annotation-config/><bean id = "exam" class="entity.NewlecExam" /><!-- <bean id = "console" class="ui.InlineExamConsole"> </bean>->를 해서 삭제.... bean을 삭제 하면 IoC 컨테이너의 상황은 아래처럼 될듯 한데 exam: Exam<---- console:InlineExamCodeconsole는 또 사용해야겠으니 아래처럼 @Componet를 등장시키고, @Componetclass InlineExamConsole{ @Autowired public void setExam(Exam exam) { this.exam = exam; }}IoC 컨테이너에서 console:InlineExamCode를 부활exam: Exam<---- console:InlineExamCode그런데 부활만 했지 그냥 좀비 상태가 되어 버린 console:InlineExamCode... console:InlineExamCode은 어떻게 찾는건지..그럼 xml를 변경<context:component-scan base-package = "spring.di.ui"/><context:annotation-config/><bean id = "exam" class="entity.NewlecExam" />위 테그로 spring.di.ui에 컴포넌트가 있으니 다른곳에 찾지 말고 위 테그에서 컴포넌트 찾고 그 컴포넌트를 Bean에 등록해서 객채화 해~~~ 라는거같은데 코드상으로는 이렇게 이해를 했어요하지만 강의에서는 context:component-scan base-package 를 못본거 같은데 ....(뭐 제가 바빠서 꼼꼼하게 못본것일 수도 있고 ) 저 컴포넌트의 이해를 좀 도와주시면 안될까요??컴포넌트 활용이나 @Component를 사용안하면 얼마나 불편해지길래 저 이노테이션을 사용한건지 ...(사실 저 이노테이션을 안써도 잘 활용할 수 있을거 같은데 ...)
- 미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
[실습]Thymeleaf- 부트스트랩 템플릿 - 자료가 달라요 ...
안녕하세요 틈틈히 공부 하고 있는데 여기까지 왔네요..이해를 못하는 부분이 좀있어서 첨 부터 다시 보고 여기 까지 왔는데 모르는부분은 인터넷에서 확인하고 알아갔는데 강의 내용에서 알려주신 자료와 강의 하신 자료가 다른거 같아서 이렇게 글 남기네요 Personal - Free Bootstrap Template - Start Bootstrap에서 받은 자료을 받아서 압축 풀면 ======================================== 위처럼 나타납니다. 강의 내용에서 자료를 받은 내용은 이렇더라구요=============================제자료는 강사님의 자료 처럼 Vendor이 없어요...강의 노트를 확인하면 [링크에서 템플릿 파일 다운로드 후 압축을 해제하고, 파일과 폴더를 각각 아래 경로에 추가합니다. 디렉토리가 없다면 만듭니다]라고 적혀 있어서 위 처럼 폴더를 만들긴 했지만 vendor폴더가 없어요 강사님의 git에 있는 벤드를 가져와서 붙여도 되나요?? 그러면 강의 내용을 앞서 가는거 같아서 하다가 말았어요...Vendor 폴더 그냥 폴더만 만들고 계속 강의 들어도 되나요?
- 미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
실습리포지토리 테스트 코드 작성 강의 오류
안녕하세요 또 이렇게 질문하게 되네요 먼저 코드는 틀린거 없이 Git 내용과 강의 내용코드 그대로 작성하였습니다. 하지만 왜 일까요?? 에러가 나네요 이부분이 에러 납니다. al experience = experienceRepository.findAll()======================@Test fun testFindAll() { println("---- findAll 테스트 시작 ----") val experience = experienceRepository.findAll() assertThat(experience).hasSize(DATA_SIZE) println("experiences.size: ${experience.size}") for (experience in experience) { assertThat(experience.details).hasSize(experience.title.toInt()) println("experience.details.size: ${experience.details.size}") } println("---- findAll 테스트 종료 ----") }==================================== 이부분도요 findAllByIsActive(true) @Test fun testFindAllByIsActive() { println("----- findAllByIsActive 테스트 시작 -----") val experiences = experienceRepository.findAllByIsActive(true) assertThat(experiences).hasSize(DATA_SIZE) println("experiences.size: ${experiences.size}") for (experience in experiences) { assertThat(experience.details).hasSize(experience.title.toInt()) println("experience.details.size: ${experience.details.size}") } println("----- findAllByIsActive 테스트 종료 -----") } 에러 코드는 기니깐 핵심 부분만 올려 드리면 Hibernate: select e1_0.experience_id,e1_0.created_date_time,e1_0.description,d1_0.experience_id,d1_0.experience_detail_id,d1_0.content,d1_0.created_date_time,d1_0.is_active,d1_0.update_date_time,e1_0.end_month,e1_0.end_year,e1_0.is_active,e1_0.start_month,e1_0.start_year,e1_0.title,e1_0.update_date_time from experience e1_0 left join experience_detail d1_0 on e1_0.experience_id=d1_0.experience_id where e1_0.is_active=?org.springframework.orm.jpa.JpaSystemException: No default constructor for entity 'com.justkim.portfolio.domain.entity.ExperienceDetail' at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:341) 이이쿠 한줄만 적는데도 기네요 ExperienceDetail.kt 코드는@Entity class ExperienceDetail(content: String, isActive: Boolean) : BaseEntity() { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "experience_detail_id") var id:Long? = null var content: String = content var isActive: Boolean = isActive fun update(content: String, isActive: Boolean) { this.content = content this.isActive = isActive } }이런데 ExperienceDetail( 가 계속 경고를 때리네요Class 'ExperienceDetail' should have [public, protected] no-arg constructor https://github.com/justkjy/portfolio-justkim 깃 주소입니다 구글에서 위 에러를 검색하니깐 인프런 오류 질문이 올라 와 있던데 봐도 모르겠네요 https://www.inflearn.com/questions/931371/test-%EC%98%A4%EB%A5%98 감사합니다.
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
고민 있어요ㅠ.ㅠ 자바 스프링 vs 코트린 스프링
안녕하세요. 한 몇달간 코틀린 공부하고 안드로이드 개발도 공부하고 나름 대로 스스로 잘만들었다는 앱도 만들었어요. 이번 새로 들어간 회사에서도 잘 만들었다고 하고 다들 잼있게 보더라구요..안드로이드와 연동해야되는 스프링도 공부하면 좋겠다 해서 스프링 공부중인데 코틀린으로 만든 스프링이 너무 없어요...그냥 자료가 없어요 ... 코플링이 있긴하지만 그냥 자바를 코틀린으로 언어 컨버팅한것만 있구... 이게 자바강의인지 스프링 강의인지 .. 쩝 그래서 그런데 자바를 필수로 해야되나요??자바를 너무 싫어하는게 ..옛날 첫 회사에서 자바 회사였는데 너무 힘들엇거든요. 직장 상사한테 쿠사리도 너무 많이 먹고, 그러다 결굴 그 회사 나오고 나서 자바 혐오가 생기더라구요.. 자바 언어만 봐도 그때 회사에서 혼난 기억이 10년이 지났는데도 짜증이 나요.C도 하고 mfc도 하고 C#도 하고 파스칼도 하고 새로 배운 코틀린도 하고 뭐 다 하겠는데 자바만큼은 진짜 싫어요 ...어떻게 코틀린으로 스프링 고급 단계까지 올라 갈 수 있는 방법 없을까요??
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
강의노트 ZIP 파일이 비어있습니다.
강의노트 ZIP 파일이 비어있습니다. 메일로 자료 송부 부탁드립니다. hijong01@naver.com
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
Kotlin: Unresolved reference: MappedSuperclass
실습 2 클래스 생성 3분 에아래 코드를 작성했는데@MappedSuperclassKotlin: Unresolved reference: MappedSuperclass오류가 떠요 "persistence" 이것도 안보여요import jakarta.persistence.MappedSuperclass build.gradle.kts 의존성은 아래처럼 되어 있어요 plugins { id("org.springframework.boot") version "3.2.3" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.9.22" kotlin("plugin.spring") version "1.9.22" } dependencies { implementation("org.springframework.boot:spring-boot-starter-thymeleaf") implementation("org.springframework.boot:spring-boot-starter-validation") implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") runtimeOnly("com.h2database:h2") runtimeOnly("com.mysql:mysql-connector-j") testImplementation("org.springframework.boot:spring-boot-starter-test") } 깃은https://github.com/justkjy/portfolio-justkim 입니다. 왜 못찾는다고 할까요? 추가 왜 JPA 관련 에러가 계속 나는걸까요??
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
ProjectSkill은 데이터가 안들어가고 있습니다.
안녕하세요. 데이터베이스 초기화에서 질문 남깁니다.현재 Project 엔티티에서 ProjectSkill 간의 참조가 아래와 같습니다.@OneToMany(mappedBy = "project") var skills: MutableList<ProjectSkill> = mutableListOf()위 관계는 project_skill 테이블이 연관관계의 주인이 되고, Project 엔티티는 그저 거울(mappedBy 속성에 의해)이 되는 걸로 알고 있습니다.위 상태에서는 project.skills.addAll() 로 값을 넣어줘도 project_skill 테이블에 데이터가 들어가지 않고 projectSkill을 직접 save해줘야 insert 쿼리가 날아가는 것으로 알고 있습니다.그러나 DataInitializer에서는 project.skills.addAll()로 넣어주고 있습니다. 그래서 실제로 데이터베이스를 확인해보면 project_skill 테이블에는 값이 들어가지 않고 있는 걸 확인할 수 있습니다. 다른 테이블에는 의도한대로 데이터베이스 들어가는 반면에 말입니다.혹시 제가 잘못 알고 있는 거라면 바로잡아주시길 바랍니다.
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
도커 질문이 있습니다.,
강의자료와 똑같이 진행했는데 도커의 포트폴리오를 실행하면 1초뒤에 바로 종료됩니다. 원인이 뭘까요?
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
화면 이동 시 css 적용 안 되는 문제
부트스트랩 파일을 그대로 사용하고 있는데 index화면은 css가 잘 적용되어 있으나 resume와 projects 로 페이지가 넘어갈 때 css 적용이 안 됩니다. <!DOCTYPE html> <html lang="ko" xmlns:th="http://www.thymeleaf.org"> <div th:replace="~{/presentation/fragments/fragment-head :: head}"></div> <body class="d-flex flex-column h-100"> <main class="flex-shrink-0"> <!-- 타임리프가 해당 경로에 있는 :: 뒤 이름을 찾아서 이자리에 교체해줌 --> <div th:replace="~{/presentation/fragments/fragment-navigation :: navigation}"></div> <header class="py-5"> <div class="container px-5 pb-5"> <div class="row gx-5 align-items-center"> <div class="col-xxl-5"> <!-- Header text content--> <div class="text-center text-xxl-start"> <div class="badge bg-gradient-primary-to-secondary text-white mb-4"><div class="text-uppercase">Kotlin · Spring · SQL</div></div> <div class="fs-3 fw-light text-muted">캐치프레이즈 넣어보기 </div> <h1 class="display-3 fw-bolder mb-5"><span class="text-gradient d-inline">자기소개 넣기</span></h1> <div class="d-grid gap-3 d-sm-flex justify-content-sm-center justify-content-xxl-start mb-3"> <a class="btn btn-primary btn-lg px-5 py-3 me-sm-3 fs-6 fw-bolder" href="../../../../../../../Downloads/startbootstrap-personal-gh-pages/startbootstrap-personal-gh-pages/resume.html">Resume</a> <a class="btn btn-outline-dark btn-lg px-5 py-3 fs-6 fw-bolder" href="../../../../../../../Downloads/startbootstrap-personal-gh-pages/startbootstrap-personal-gh-pages/projects.html">Projects</a> </div> </div> </div> <div class="col-xxl-7"> <!-- Header profile picture--> <div class="d-flex justify-content-center mt-5 mt-xxl-0"> <div class="profile bg-gradient-primary-to-secondary"> <!-- TIP: For best results, use a photo with a transparent background like the demo example below--> <!-- Watch a tutorial on how to do this on YouTube (link)--> <img class="profile-img" src="assets/profile.png" alt="..." /> <div th:replace="~{/presentation/fragments/fragment-dots :: dots1}"></div> <div th:replace="~{/presentation/fragments/fragment-dots :: dots2}"></div> <div th:replace="~{/presentation/fragments/fragment-dots :: dots3}"></div> <div th:replace="~{/presentation/fragments/fragment-dots :: dots4}"></div> </div> </div> </div> </div> </div> </div> </header> <!-- About Section--> <section class="bg-light py-5"> <div class="container px-5"> <div class="row gx-5 justify-content-center"> <div class="col-xxl-8"> <div class="text-center my-5"> <h2 class="display-5 fw-bolder"><span class="text-gradient d-inline">About Me</span></h2> <p class="lead fw-light mb-4"></p> <p class="text-muted" th:each = "introduction : ${introductions}"th:text ="${introduction.content}">Lorem ipsum dolor sit amet</p> <div class="d-flex justify-content-center fs-2 gap-4"> <a class="text-gradient" href="#!" th:each = "link : ${links}"th:href ="${link.content}"><i class="bi bi-github" th:class ="|bi bi-${link.name}|"></i></a> </div> </div> </div> </div> </div> </section> </main> <!-- Footer--> <div th:replace="~{/presentation/fragments/fragment-footer :: fooer}"></div> <!-- Bootstrap core JS--> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script> <!-- Core theme JS--> <script src="../../../../../../../Downloads/startbootstrap-personal-gh-pages/startbootstrap-personal-gh-pages/js/scripts.js"></script> </body> </html> css 파일 건드리지 않고 그대로 두었는데 무엇이 문제인지 궁금해 질문드립니다. 참고로 resume 화면상에서 href 설정을 <link th:href="@{/css/styles.css}" rel="stylesheet" /> 이와 같이 추가해주니 변경이 잘 되었습니다. 그렇다면 기존의 <link href="../../../../../../../Downloads/startbootstrap-personal-gh-pages/startbootstrap-personal-gh-pages/css/styles.css" rel="stylesheet" /> 이렇게 적용한 코드와 차이는 무엇인가요?
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
강의노트 내용
수업자료 파트에서 강의노트 파일을 받았는데 비어 있는 파일이라고 나옵니다.
- 해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
안녕하세요. 갑자기 Admin 으로 이동되어서 질문드립니다.
안녕하세요. 강의 잘 듣고 있습니다. 이 전단계가 Thymeleaf 레이웃 리팩토링이었는데, 갑자기 admin 의 interceptor 로 넘어와서요. 파일이 전부 개발되 있는 상태인데 영상 그대로 따라해도 되는건가요..?