질문드립니다
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요! 스프링 입문편 듣고 있습니다 들으면서 이해가 가는 부분도 있고 어렵게 느껴지는 부분들이 있는데 이해갈때까지 입문을 돌려보는게 나을까요? 기본편을 결제해서 듣는게 나을까요? 기본편이 더 세세한 설명이 있는지도 궁금합니다
- java
- spring
- mvc
- spring-boot
172만명의 커뮤니티!! 함께 토론해봐요.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요! 스프링 입문편 듣고 있습니다 들으면서 이해가 가는 부분도 있고 어렵게 느껴지는 부분들이 있는데 이해갈때까지 입문을 돌려보는게 나을까요? 기본편을 결제해서 듣는게 나을까요? 기본편이 더 세세한 설명이 있는지도 궁금합니다
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
신입 개발자 입니다! 다름이 아니라 제가 회사에서 아직 교육기간이라 선생님의 강의를 듣고있는데요, 스프링입문 강의를 1회 완강을 해도 확실히 와닿지가 않아서 한 번 더 들을까 생각중인데.. 일단 진도를 쭉쭉 치고 나가는게 좋을지 아니면 스프링입문을 한번 더 듣고 기본편,HTTP… 이렇게 나가는게 좋을지 여쭤보고자 문의 남깁니다 한달뒤에 교육이 끝나면 프로젝트에 투입되는 상황이라 고민이 됩니다..!
실전! Querydsl
삭제된 글입니다
실전! 스프링 데이터 JPA
강사님의 강의를 보고 Spring/JPA 토이 프로젝트를 만들고 성능 테스트를 진행해보려고 합니다. 현재 프로젝트는 AWS EC2 프론티어 클라우드 서버에서 구동 중인데, 성능 테스트 시 aws를 이용하게 되면 부담스러운 비용이 발생할까봐 우려되었습니다. 때문에 로컬 환경에서 가상머신을 띄우고 실구동환경의 컴퓨팅 자원과 동일하게 세팅한 뒤 테스트를 진행해보려고 하는데, 이러한 방식으로 진행한 테스트 결과가 실제 서버에 적용할 수 있을만큼 유의미한지 궁금합니다. 질문 읽어주셔서 감사합니다.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한님 java 중급강의가 24년 초에 나온다고 알고 있는데 3,4월쯤에 나올나요??
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문탭으로 가야하는데 고민으로 작성했네요... 수정으로는 이동이 안되는데 이동 가능하다면 부탁드립니다.ㅠㅠ =========================================== AOP 수강 중 에러가 발생했는데 어디를 건드려야할지 잘 모르겠어서 문의 남깁니다. 우선 강의와 다른 환경으로 실습해보고 있어 조금씩 코드가 다릅니다. 먼저 에러 메세지는 아래 2개입니다. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberController' defined in file [D:\dev\java\hello-spring\out\production\classes\hello\hellospring\controller\MemberController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.hellospring.service.MemberService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.hellospring.service.MemberService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 2번 메세지를 보게 되면 MemberService타입의 Qualifying 한 bean이 존재하지 않아 wiring 할수 없다는 에러인데. 스프링을 처음 해보는 입장에서는 그대로 따라 쳤는데 되지 않아 어떻게 더 수정해야할지 고민입니다. 관련된 코드 블럭을 첨부 드립니다. SpringConfig.Java package hello.hellospring; import hello.hellospring.repository.*; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringConfig { // private EntityManager em; private final MemberRepository memberRepository; public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; } // public SpringConfig(EntityManager em) { // this.em = em; // } @Bean public MemberService memberService(){ return new MemberService(memberRepository); } // @Bean // public MemberRepository memberRepository(){ //// return new MemoryMemberRepository(); //// return new JdbcMemberRepository(dataSource); //// return new JdbcTemplateMemberRepository(dataSource); //// return new JpaMemberRepository(em); // } } MemberService.Java package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.JdbcMemberRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @Component public class MemberService { private final MemberRepository memberRepository; @Autowired public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } /* * 회원가입 */ public Long join(Member member){ //같은 이름이 있느 중복 회원X validatedDuplicateMember(member); memberRepository.save(member); return member.getId(); } private void validatedDuplicateMember(Member member) { memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); } public List<Member> findMembers(){ return memberRepository.findAll(); } public Optional<Member> findOne(Long memberId){ return memberRepository.findById(memberId); } } application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none spring.datasource.username=sa gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '21' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' // implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' } tasks.named('test') { useJUnitPlatform() } MemberController.java package hello.hellospring.controller; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } @GetMapping("/members/new") public String createForm() { return "members/createMemberForm"; } @PostMapping("/members/new") public String create(MemberForm form){ Member member = new Member(); member.setName(form.getName()); memberService.join(member); return "redirect:/"; } @GetMapping("members") public String list(Model model){ List<Member> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; } } 감사합니다.
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 환경에서 h2 메모리 db 를 사용하는 방식에 대한 실용성 관련 고민이 있습니다. 프로젝트를 진행하다보면 기본적으로 orm 기반으로 구현을 하지만 일부 예외적인 기능들은 특정 dbms 에 의존적인 쿼리를 직접 실행하는 경우가 불가피하게 발생하는 듯 합니다. 이 경우 특정 dbms(예를들어 mysql) 에 대한 의존성이 발생할 수 밖에 없는데요. 이때 운영 dbms 와 다른 메모리 db(h2) 를 사용하여 테스트를 작성하게 불가능해지고 결국엔 실환경과 동일한 테스트용 db 를 세팅하는식으로 다시 변경하게 되는 듯 합니다. (결국 메모리 db 를 이용한 간단한 테스트를 사용할 수 없는 상황) 실무적인 차원에서 이런 경우 보통 어떤 방식으로 해결하는게 최선일지 궁금합니다.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
현재 자바 기본편까지 듣고 스프링 입문 강의 수강 중입니다. 학업에 있어 건의드릴 사항이 있는데 강의 소스코드가 있었으면 좋겠습니다. 스프링 로드맵을 따라 쭉 공부할 예정인데 이 강의의 다음 강의인 스프링 핵심원리 기본편에도 강의 소스코드가 없는 것 같아 말씀드립니다. 감사합니다.
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의 잘 듣고 있습니다. msa를 현업에서 적용시키려고 하고있는데 질문이있습니다. Spring Cloud Config 가 가지고 있는 경로에 Database 연결 정보를 넣고 db를 사용하는 Micro service들이 해당 config서비스를 빌드시 참조하도록 설계해보았는데요, Spring Cloud Config service에 너무 의존을 하고 있는거 같단 생각이 듭니다. 해당 서비스가 먹통이되면 다른 서비스 모두 db는 사용할 수 없다는 치명적인 이슈가 있으니까요. 현업에서 Spring Cloud Config 서비스를 구현할 때에 이렇게 크리티컬한 정보는 사용하지 않는지, 사용한다면 어떻게 의존성이 강한 문제를 해결 할 수 있는지 궁금합니다.
[개념은 호옹~, 실습 빡] 스프링 부트, 입문!
앞서서 만든 프로그램에 apiContrioller가 있고 그냥 controller가 있었는데 이 둘의 차이가 궁금합니다. 또한 이미 만든 show,new,index등의 mustache들도 API controller로 만들수 있는거 아닌가요?(자바스크립트로 요청을 보낸다면) 반대의 경우도 가능할까요?
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
그런데 정말 무슨 내용인지 잘 모르겠습니다. 자바 입문 교제 공부 를 끝내고 자바 웹 백엔드 공부를 하고 싶어서 찾아 보았는데 자바 웹 백엔드 공부를 하려면 스프링은 필수라고 하여서 수강 중인데 내용 이해가 잘 안됩니다. 이럴땐 일단 완강부터 한 후 에 다시 들어봐야 하나요 너무 힘듭니다.
실전! 스프링 데이터 JPA
@RequestMapping(value = "blog/{blogId}/poster/{posterId}/edit", method = RequestMethod.PATCH) ResponseEntity<String> editPoster(@PathVariable(required = false) Long blogId, @PathVariable(required = false) Long posterId, @ModelAttribute PosterDto posterDto, Model model) throws URISyntaxException { categoryService.findCategoryAndAddToModel(blogId, model); posterService.updatePosterByDto(posterId, posterDto); String redirectUrl = "/blog/" + blogId + "/poster/" + posterId; System.out.println("redirectUrl = " + redirectUrl); // 리다이렉션을 원하는 경우 URI location = new URI(redirectUrl);// 새로 업데이트된 리소스의 URI 생성; return ResponseEntity.status(HttpStatus.SEE_OTHER).location(location).body("Resource updated successfully"); } 안녕하세요 JPA주제는 아니지만 아무리 찾아봐도 안떠서 여기에라도 질문을 올립니다.. 일단 제가 하고있는 프로젝트는 서버사이드 렌더링으로 타임리프를 사용하고있습니다. 영한님의 MVC 강의 중 PRG(Post Redirect and Get) 기법을 사용하는 것을 보고 항상 Post method로 데이터를 수정하고 redirect 하는 컨트롤러를 만들었습니다. 어느날 Patch 나 Put 이 데이터를 수정하는데 쓰이는 HTTP method라는 말을 듣고 Patch나 Put을 사용한 후 리다이렉트를 해줬는데 리다이렉트가 안되는 문제가 발생하였습니다. 구글링을 해봐도 Patch 후에 redirect 하는 방법은 거의 나오질 않고 gpt한테 물어보니 저런 방법을 쓰라고 해서 썼지만 화면이 전환되지 않는 문제가 있었습니다. Patch method 는 redirect를 할 수 없는지 그렇다면 redirect 를 사용한다면 Post method 를 사용하는 것이 좋은지 궁금합니다.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 언어 공부 문법 전체적인 공부를 한번 마친 학생입니다. 스프링을 해야겠다 싶어 스프링 입문을 듣는데 듣는 도중 뭐지? 문법도 그렇고 잘 이해가 안가는 부분이 많습니다. 코드가 이해가 안가는 부분이 많기도 합니다. 이럴 경우 자바를 다시 한번 듣고 스프링으로 넘어 와서 들어야할까요?
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
국비교육으로 현재 학원에서 수강중입니다. 이제 곧 스프링을 배우게 되는데 학원에서는 이클립스 사용중이고 빌드툴은 메이븐으로 사용한다고 하네요 미리 강의 듣고 공부를 좀 하려고 했는데 학원 환경에 맞춰서 이클립스 메이븐으로 설정 맞추고 강의를 들으려고 보니까 패키지 구조도 약간 다르고 처음에 환경 설정하면서 오류잡는데만 이틀을 보냈습니다. 그리고 스프링부트 없이 하다보니 계속 조금씩 차이가 생기기도 하구요 그래서 그냥 혼자 공부할때만 인텔리제이+그래들로 강의랑 똑같이 맞추려고 하는데 괜찮을지 모르겠네요. 가능하면 학원환경에 우선적으로 맞추고 강의를 듣고싶었는데 생각보다 다른부분이 많아 고민입니다..타임리프 대신 jsp사용중이기도 하고 이렇게 해도 이클립스+메이븐사용하는 학원수업에 지장 없을까요? 아니면 어떻게든 이클립스+메이븐으로 가능한한 강의를 따라가는게 맞는지..
인프라공방 - 그럴듯한 서비스 만들기
인프라에 대해 처음 공부하는 터라 막막함이 있어 강의를 수강하기 시작했는데요. 강의를 듣기 전 미션을 수행하려고 보니 네트워크와 리눅스 지식은 조금 있지만 도커나 was에 대한 학습 내용을 보니 저에게는 어려움이 다가왔습니다. 먼저 미션을 수행하기 전에 아래 도커공부를 먼저 하고 인프라 미션을 수행해야할까요? https://www.brainbackdoor.com/infra-workshop/docker-container
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
삭제된 글입니다
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
https://drive.google.com/file/d/19EdcpxnIZQKKAeCSlucWIrX8HVv4bCtf/view?usp=drive_link 머리아프네요.. 17강까지 잘되었습니다..
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요, 현재 사지방에서 스프링을 공부하고있는 군인입니다. 스프링 입문 편을 보면서 다른건 다 문제 없이 진행됐는데 h2 database를 활용하는 부분에서부터 막히게 됐습니다. 계속해서 방법을 검색하고 적용해봤지만 결국에 DB관련 파트는 포기하게됐습니다. 앞으로 '스프링 완전 정복' 로드맵을 따라가고싶은데 DB이후의 강의인 '스프링 핵심 원리-고급편', '스프링 부트 -핵심 원리와 활용' 강의를 들을 때 DB를 활용하지 못하면 제약이 있거나 진행이 불가하게 되는지 궁금합니다!
실전! 스프링 데이터 JPA
안녕하세요 스프링 데이터 JPA 강의를 듣다 질문이 생겨 문의드립니다. 토이프로젝트로 JPA를 사용하여 Mysql 전문검색(Full Text Search)를 해보는 중입니다. public interface JpaMenuReviewRepository extends JpaRepository<MenuReview, Long> { @Query(value = "SELECT * FROM menu_review WHERE MATCH (comments) AGAINST (:keyword IN NATURAL LANGUAGE MODE)", nativeQuery = true) List<MenuReview> findMenuReviewByCommentsContainingOnFullTextSearchWithQuery(@Param("keyword") String keyword); } JPA에서는 Full Text Search를 지원하지 않아서 nativeQuery로 다음과 같이 쿼리문을 작성하였습니다. 그런데 전문검색을 위해서 Table의 컬럼에 Full index를 추가해야 전문검색 쿼리가 작동한다고 알고 있는데요, JPA의 해당 특징은 "JPA의 DDL 자동 생성 기능" 또는 "JPA의 스키마 자동 생성 기능"으로 알고 있습니다. 이 기능은 JPA가 애플리케이션의 Entity 클래스를 분석하고, 이를 바탕으로 데이터베이스 스키마를 자동으로 생성하거나 업데이트하는 역할을 하여 @Entity , @Table , @Column 등의 애노테이션을 사용하여 엔티티 클래스를 정의하면, JPA는 이 정보를 바탕으로 필요한 테이블과 컬럼을 데이터베이스에 생성하는데요, 이럴 경우에는 제가 "ALTER TABLE tbl_query ADD FULLTEXT INDEX FullText (`comments` ASC)" 해당 ddl문을 넣을 수 없어서 곤란한 상황입니다. JPA, Mysql에서는 Full Text Search를 사용할 수 없는 건가요? 차선책으로 Elastic Search, Postgre, Mongo를 구상중인데 차선책으로 우회해야할지 고민입니다. 추가로 실무에서는 전문검색 기능을 위해 어떤 방법을 쓰시는지, 관련해서 문의드리고 싶습니다. 강의내용과 동떨어져 있는 질문이라 죄송합니다.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
현재 스프링 완전정복로드맵을 들어가기전 스프링 입문 강의를 듣고있는 수강생입니다. 수업하나하나 들을때마다 코드하나하나 따라치는거밖에 못하고 실제로 강의끝나고 이걸복습하자니 어디서부터 해야할지도 모르겠습니다. 제가 spring을 처음접해서 그런거일수도있는데 이렇게 코드만 따라치는게 맞는지 공부하는 느낌이 안들고 의구심이 들어서 질문해봅니다 ㅠㅠㅠ 처음 말씀해주신 목표는 전체적으로 어떻게 돌아가는지, 동작하는지를 이해하는게 포인트라고 하셨는데 다행히 이부분에서는 구글링으로 부족한개념들을 메꾸면서 도달할수는 있을거같습니다. 하지만 위에서 적었다싶이 코드를 하나하나 이해하고 따라치는데는 한강의를 듣는데 4~5시간이 소요되어 실제로 완강을 하기에는 2주가 넘는시간이 소요됩니다.. 그래서 조언을듣고싶습니다