묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
javadoc 사용법이 따로 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]22:34초 경에 영한님 같은 경우에는 초록색 글씨로 주석이 자동 작성되어있는걸 볼수 있는데요 저 같은 경우에는 이렇게 초록색 글씨 없이 표시되는데 인텔리제이 ultimate버전은 지원하지 않는 기능인가요?? 영한님은 엔터프라이즈 버전을 쓰셔서 나오는걸까요? 아니면 따로 설정이 있는걸까요??
-
미해결스프링 부트 - 핵심 원리와 활용
explodedWar 문의
server 프로젝트 위치에서 gradlew explodedWar 을 실행해 압축이 풀어진 WAR 파일 경로를 톰캣 Deployment directory 경로에 기재해두었습니다. 이후 강의를 보니 강사님께서는 프로젝트를 수정하고 나서 톰캣을 재실행하니 소스가 수정된 내역이 서버에 바로 반영이 되더라구요. 근데 저는 server 프로젝트 경로로 가서 build 폴더의 exploded 파일을 삭제하고 다시 gradlew explodedWar 명령어를 실행해야 수정된 소스가 톰캣에서 실행되던데 뭐가 잘못된걸까요..?
-
해결됨Practical Testing: 실용적인 테스트 가이드
RestDocs snippets 경로 질문
bootJar.enabled = true jar.enabled = false configurations { asciidoctorExt } ext { snippetsDir = file('build/generated-snippets') } dependencies { implementation project(":core:core-domain") implementation project(":storage:db-main") implementation project(":support:logging") implementation project(":tests:api-docs") implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation 'io.jsonwebtoken:jjwt-api:0.12.3' implementation 'io.jsonwebtoken:jjwt-impl:0.12.3' implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3' asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor' } tasks.register('restDocsTest', Test) { group = 'verification' useJUnitPlatform { includeTags('restdocs') } } asciidoctor { inputs.dir snippetsDir configurations 'asciidoctorExt' sources { include ("**/index.adoc") } baseDirFollowsSourceFile() dependsOn restDocsTest }냅다 이미지 투척해서 죄송합니다.위의는 RestDocs Test가 포함된 하위 모듈의 그래들 입니다.멀티모듈이긴한데 경로는 강의랑 딱히 다를 거 없을 거 같아서했다가 상위로 5번이나 이동 시켜야 정상 작동하네요,,{docDir}이 src/docs/asciidoc 까지 잡혀가지고그런 거 같은데이거 설정은 어디서 할 수 있을까요,,
-
미해결스프링 핵심 원리 - 기본편
기본편 완료시점 로드맵 질문드립니다 !
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다음으로 강의에서는 입문편까지만 완료하구 부트 JPA 활용으로 가는 루트로 말씀해주셨는데 유튜브 링크에는 스프링 로드맵을 끝까지 듣구 부트로 들어가길 권장하셔서 어떤걸 해야하는지 헷갈립니다.혹시 저때 스프링로드맵이 완성이 안돼있어서 저렇게 말씀하신거라면 저는 우선 프로젝트로 먼저 야생형코스로 하는게 더 잘 맞을거같아서 JPA 부트로 먼저 넘어갔다가 스프링 완전정복으로 다시 돌아올까했는데 좀 무리가 있을까요
-
미해결견고한 결제 시스템 구축
동시성 제어 (optimistic locking) 재시도 부분 질문 드립니다.
동시성 제어를 optimistic 방식으로 구현을 하시고 retry 를 직접 구현하셨느데요- 혹시 직접 구현하지 않고스프링 @Retryable 을 이용안하신 이유가 있으실까요? @Retryable을 하면 더 간단하게 재처리가 가능할것 같아서요~!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2.bat 실행이 안됩니다.
C:\study\H2\bin 폴더 하위의 배치 파일을 실행하려고 하니 이런식으로 오류가 납니다.
-
미해결스프링 핵심 원리 - 기본편
interface가 왜 bean에 등록이 되나요? (재등록)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 프로젝트 압축파일 :https://drive.google.com/file/d/1JuIfXWrbMbE0SuppC6Pnd36vSqKkp2aX/view?usp=drive_link강의를 보면서 allTest를 하니 강의에 없는 오류가 나와서 질문드립니다. CoreApplicationTest -> contextLoads 부분 오류 내용은 다음과 같습니다expected single matching bean but found 2: memoryMemberRepository,memberRepository즉, 하나의 빈을 찾아야하는데 2개의 빈을 찾았다는 뜻입니다.그래서 "MemberServiceImpl"의 생성자에 @Qualifer 어노테이션을 사용하니 오류가 사라졌습니다.@Autowired public MemberServiceImpl(@Qualifier("memoryMemberRepository") MemberRepository memberRepository) { this.memberRepository = memberRepository; }하지만 궁금증이 남았습니다. @Component 어노테이션을 사용하지도 않은 interface가 빈으로 등록이 되는걸까? 궁금해서 contextLoads 함수에서 MemberRepository.class의 빈을 찍어봤습니다.다음과 같이 interface도 빈으로 등록이 되어 있음을 확인했습니다. 추상 클래스라 생성도 하지 못 하는데 왜 빈에 올라가 있는 것인지 의아하여 gpt에게 질문을 해보니"인터페이스를 구현한 클래스가 빈으로 등록될 때, 해당 인터페이스의 이름도 빈의 별칭(alias)으로 자동 등록됩니다. 이 빈 객체는 두 개의 이름("memoryMemberRepository"와 "memberRepository")으로 참조될 수 있습니다."라는 답변을 받았습니다. 만약 해당 답변이 옳다면1. 굳이 왜 alias가 필요했던 것인가?2. alias이면 같은 것을 참조하는데 컴파일러는 왜 고민을하고 에러를 띄운것인가?3. @Qualifier의 사용이 필연적인가? 강의에서는 왜 그렇지 않았는데 해당 오류가 없었나?이렇게 3가지 질문을 드리고 싶습니다.
-
미해결스프링 핵심 원리 - 기본편
스프링으로 전환시 로그 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]해당 pdf 자료 참고하여 src/main/resources/logback.xml 파일에 해당 내용복사하여 만들었으나 memberApp 과 OrderApp 실행시 로그가 보여지지 않습니다
-
미해결스프링 핵심 원리 - 기본편
주문과 할인 도메인 개발에서 궁금한 점 있습니다.
제가 부족한 탓이지만, GPT에 물어봐도 해결되지 않아 이렇게 글로 남깁니다. package hello.core.order; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.member.Member; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } }이 코드에서 Member로 선언한 member가 질문인데, 생성자로 3개의 변수를 받는 것으로 설정되어있습니다. 근데 해당 코드를 보면 memberId만 대입하기에, 2개의 값이 불안정한 상태가 될 것이라고 생각하여 에러가 날 줄 알았는데, 그러지 않습니다. 이러한 이유를 알 수 있을까요?형편없는 질문을 해서 죄송합니다..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
orderList메서드 동작 중 orderSearch관련해서 질문 드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]타임리프 orderSearch에 값들을 폼에서 동적으로 만들면은 /orders?memberName=홍길동&orderStatus=ORDER 이런식으로 자동으로 다시 매핑 후 이후 orderSearch에 값이 들어있는 상태로 findOrders를 수행하게 되는 흐름 같은데 동적으로 다시 orderList메서드를 타고 들어가는 흐름이 이해가 되지 않아 질문드립니다. post방식이나 이런 것이 아니라 자동으로 이렇게 orderSearch에 값을 담아 처리할 수 있는 원리가 무엇인가요? 아니면 혹시 mvc패턴에 대한 내용인 것 같아서 mvc강의 중에 해당 내용에 대해 알 수 있는 강의가 있을까요? 본지가 조금 되어가지구 까먹은 것 같기도 합니다..!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JpashopApplicationTests 실행 시 에러
JpashopApplicationTests 함수 실행 시 아래와 같은 에러가 발생합니다... 이유를 모르겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
${data} 부분이 문자열로 인식되는 것 같습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의 내용을 따라 Controller쪽을 하기 사진처럼 작성하였습니다. hello를 매핑하여 templates/hello.html을 렌더링하고, 화면 실행 시, attributeValue 부분이 화면에 뜨게 하기 위해선하기와 같은 코드를 짜야한다고 이해했습니다.다만, 데이터를 넘겨받는 $부분이 문자열로 인식되어, 아래처럼 뜹니다. 저와 비슷한 에러를 겪는 분의 질문도 봤지만 무료/유료 버전의 차이라고 하셨는데, data 자체를 받질 못하는거 같아 문의글 남기게 되었습니다. 어디가 잘못된 것인지 잘 모르겠습니다 ㅠ
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
커넥션풀과 DB 드라이버 그리고 DataSource에 대한 정리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용에서 제가 이해한게 맞는지 궁금해서 생각 정리와 중간 질문을 남깁니다. 개념적 이해가 들리거나 부족한 부분을 알려주시면 감사합니다 ㅠㅠ1. Repository가 DB를 접근을 하려면 3 way handshake 방식을 통해 커넥션 객체를 얻게되고 해당 객체를 통해 DB에 필요한 sql 문을 전달하고 응답을 받습니다.2. DB 회사마다 시스템이 다르기때문에 커넥션 객체를 얻기위해 (데이터 연결) JDBC 라는 인터페이스로 추상화하였고,각 DB들(Oracle DB, mysql 등등)은 JDBC인터페이스로 구현하여 라이브러리로 제공합니다. DriverManager 를 통해 해당 구현체를 탐색 후 연결할 수 있습니다.3. DriverManager로 연결하는 것은 직접 커넥션을 받아오는 방법이고 sql전달 후에 커넥션을 닫아야하기에 번거로워 커넥션풀이라는 새로운 연결방식이 나왔습니다. 4. Connection pool 은 프로그램 실행시 설정해둔 개수만큼 미리 DB와 연결작업을 하여 커넥션 객체를 받아오고 저장해놓습니다. ------ 중간 질문 ------4 번에서 Connection Pool이 미리 커넥션 객체를 받아올때, DriverManager를 사용하는 것인지 아니면 커넥션풀 구현체가 직접 라이브러리에 있는 드라이버 구현체를 통해 연결을 얻어오는 것인지 궁금합니다.----------------------커넥션 풀 또한 다양한 구현체들이 있기에 DataSource 라는 인터페이스로 추상화하였습니다. DriverManager 같은 경우 스프링에서 DriverManagerDataSource 구현체를 제공합니다. 하지만 DriverManagerDataSource은 커넥션 풀은 아닙니다.6. 결국 DB를 연결하고 sql을 전달하기 위해선 DataSource 인터페이스를 사용하면 되고, 커넥션풀을 사용하고 싶으면 해당 구현체를 DriverManager 를 통한 직접연결을 하고 싶으면 DriverManagerDataSource를 사용하면 됩니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 리포지토리 테스트 케이스 작석중
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿] Member result = repository.findById(member.getId()).get(); ->>member.getId().get() ->.get()의 의미가뭔가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC MemberListServlet Whitelabel 500대 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 3.x.x 대 빌드 문제와 코드 오타 분석을 해봤는데 잘 모르겠습니다. 도움 부탁드립니다..https://drive.google.com/file/d/17VaeEL-0jwMpj3vcK6j7pPBu3h7xNyW5/view?usp=drive_link
-
미해결스프링 시큐리티 OAuth2
login 성공 이후 error페이지
302 status 이후 error 페이지로 이동하는 문제가 있습니다.어떤걸 확인해야될까요?
-
미해결스프링 시큐리티 OAuth2
OAuth2 form login error
OAuth 2.0 Social Login 연동 구현 (6) 부분에 있는 영상 33:46까지 따라왔지만 form로그인에서 발생한 문제입니다. form login의 inmemory나 jdbc형태로 하는 게 아닌 CustomUserDetailsService를 통해서만 인증을 하는 것으로 보이는데, 이와 같은 에러가 발생하는 이유를 모르겠습니다. (에러코드가 조회되지 않음) 디버그 모드를 확인해보니, DaoAuthenticationProvider클래스에 있는 additionalAuthenticationChecks메소드에서 에러가 발생하고 있습니다.if (!this.passwordEncoder.matches(presentedPassword, userDetails.getPassword())) { this.logger.debug("Failed to authenticate since password does not match stored value"); throw new BadCredentialsException(this.messages .getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); } 2. presentedPassword 이부분이 값이 빈값으로 넣어지고 있는데 문제가 되는 부분인 것 같아 질문드립니다.2-1. 추가적으로 이부분은 첫 로그인이라서 에러나는 부분하고 상관이 없이 발생하는지 질문드립니다. 에러로그가 확인이 불가능하여, 코드 공유를 위해 프로젝트 공유를 하였습니다. 확인 부탁드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
new-form에서 404에러가 납니다ㅠㅠ
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]https://drive.google.com/file/d/16wM3272vs5zd06TuObdpRjwF9i4YGoQO/view?usp=sharing먼저 구글드라이브 압축 파일입니다!!강의 3분쯤에 하는 회원가입 링크에 들어가지지 않습니다..ㅜㅜ 강의자료에 있는거 복붙까지 해봤는데도 404오류가 떠서 어떤게 문제인지 궁금합니다.!
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
멀티모듈 구성에서 하위 모듈은 java 모듈로 하는 이유가 궁금합니다.
안녕하세요.편안한 추석 보내시길 바랍니다. 멀티 모듈 구성이 익숙치 않아서 많이 헤맸습니다 ㅋㅋ하위 모듈을 생성할 때, 습관처럼 스프링 프로젝트로 만들었더니 빌드 자체가 안되었고, 강의를 다시 보니 java 프로젝트로 만드는 거였더라고요. 그래서 멀티 모듈 구성은 잘했는데요...궁금한 것은 왜 스프링 프로젝트로 만들면 안 되는 거였는지 입니다.개념 영상에서 소개한 공식 문서를 확인하면 알 수 있는 내용인가요? 감사합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
드라이버 연결하는데 있어서 Class.forName(); 은 필요없을까?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]jdbc 를 통해 연결하는 여러 가이드들을 검색하다 Class.forName("Driver주소"); 를 통해 드라이버 로딩을 하고 강의와 같은 로직을 수행하는 코드를 본적이 있어 질문 드립니다. 물론 라이브 코딩을 통해 Class.forName("Driver주소"); 없이도 잘 연결되는 것을 알고 있지만 다음과 같은 코드가 있으면 어떤것이 더 좋은지 궁금합니다.