몽고db 사이트가 많이 바뀌어서
미해결
리액트로 나만의 블로그 만들기(MERN Stack)
몽고db 사이트가 많이바뀌어서 cluster 화면이 너무많이바뀌어서 강의를 알아들을수없습니다.
- 몽고db
- express
- redux
- nodejs
- react
- bootstrap
- mongodb
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
리액트로 나만의 블로그 만들기(MERN Stack)
몽고db 사이트가 많이바뀌어서 cluster 화면이 너무많이바뀌어서 강의를 알아들을수없습니다.
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Setter를 열어 둘 경우 엔티티에 변경으로 인한 유지보수가 힘들다고 말씀해주셨는데 혹시 Setter를 다 닫고 필요한 것만 연다거나, 비즈니스 메서드를 만드는 예제를 참고할 만한게 있을까요?
미해결
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
import java.util.Scanner ; public class Main { public int solution (String[] str , char word){ int count = 0 ; for (String s : str) { if (s.toLowerCase().charAt( 0 )==word){ count++ ; } } return count ; } public static void main (String[] args) { Main ch = new Main() ; Scanner sc = new Scanner(System. in ) ; String[] str = sc.nextLine().split( "" ) ; char word = sc.nextLine().charAt( 0 ) ; System. out .println(ch.solution(str , word)) ; } } 위 풀이가 왜 오답이라고 나오는건가요? .. 풀이도 정해져있나요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요 영한님 @BatchSize를 이용하여 최적화를 하다가 문득 깊은 내용을 알고싶어서 질문을 드립니다. 폴더 안의 폴더를 만드는 구조인데요 다음의 상하 관계를 가진 폴더가 총 13개 있습니다. 이 13개의 폴더 정보를 받아 위의 그림의 구조로 저장을 하고 싶었습니다 . @Getter @NoArgsConstructor (access = AccessLevel. PROTECTED ) @Entity public class Folder { @Id @GeneratedValue (strategy = GenerationType. SEQUENCE) @Column (name = "FOLDER_ID" ) private Long id ; private String name ; // 부모 @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "PARENT_ID" ) private Folder parent ; // 자식 @BatchSize (size = 900 ) @OneToMany (mappedBy = "parent" ) private List<Folder> children ; @Builder private Folder (String name , Folder parent) { this . name = name ; this . parent = parent ; } } 그래서 Folder라는 엔티티를 self reference하도록 구성을 했구요 @BeforeEach public void setUp () throws Exception { Folder aFolder = Folder. builder () .name( "A" ) .build() ; Folder bFolder = Folder. builder () .name( "B" ) .parent(aFolder) .build() ; Folder bChild1 = Folder. builder () .name( "BChild1" ) .parent(bFolder) .build() ; Folder bChild2 = Folder. builder () .name( "BChild2" ) .parent(bFolder) .build() ; Folder bChild3 = Folder. builder () .name( "BChild3" ) .parent(bFolder) .build() ; Folder cFolder = Folder. builder () .name( "C" ) .parent(aFolder) .build() ; Folder cChild1 = Folder. builder () .name( "CChild1" ) .parent(cFolder) .build() ; Folder cChild2 = Folder. builder () .name( "CChild2" ) .parent(cFolder) .build() ; Folder cChild3 = Folder. builder () .name( "CChild3" ) .parent(cFolder) .build() ; Folder dFolder = Folder. builder () .name( "D" ) .parent(aFolder) .build() ; Folder dChild1 = Folder. builder () .name( "DChild1" ) .parent(dFolder) .build() ; Folder dChild2 = Folder. builder () .name( "DChild2" ) .parent(dFolder) .build() ; Folder dChild3 = Folder. builder () .name( "DChild3" ) .parent(dFolder) .build() ; folderRepository .saveAll(Arrays. asList (aFolder , bFolder , cFolder , dFolder , bChild1 , bChild2 , bChild3 , cChild1 , cChild2 , cChild3 , dChild1 , dChild2 , dChild3)) ; em .flush() ; em .clear() ; } 이렇게 저장을 한 후 @Test @DisplayName ( "bfs 알고리즘 적용 테스트 " ) @Transactional @Commit public void bfsTest () throws Exception { // given Queue<Folder> queue = new LinkedList<>() ; Folder deleteFolder = folderRepository .findById( 1L ).get() ; queue.offer(deleteFolder) ; List<Folder> tempFolders = new ArrayList<>() ; tempFolders.add(deleteFolder) ; int i = 0 ; // when while (!queue.isEmpty()) { System. out .println( "i = " + i) ; Folder pollFolder = queue.poll() ; List<Folder> folders = pollFolder.getChildren() ; for (Folder folder : folders) { queue.offer(folder) ; } tempFolders.addAll(folders) ; i++ ; } // then Collections. reverse (tempFolders) ; folderRepository .deleteAll(tempFolders) ; em .flush() ; } 위의 코드처럼 테스트 코드를 짯습니다 그러니 select 쿼리가 많이 줄어든것을 확인할 수 있었습니다. 2022-01-13 23:25:04.471 DEBUG 21588 --- [ main] org.hibernate.SQL : select folder0_.folder_id as folder_i1_1_0_, folder0_.name as name2_1_0_, folder0_.parent_id as parent_i3_1_0_ from folder folder0_ where folder0_.folder_id=? 2022-01-13 23:25:04.492 DEBUG 21588 --- [ main] org.hibernate.SQL : select children0_.parent_id as parent_i3_1_1_, children0_.folder_id as folder_i1_1_1_, children0_.folder_id as folder_i1_1_0_, children0_.name as name2_1_0_, children0_.parent_id as parent_i3_1_0_ from folder children0_ where children0_.parent_id=? 2022-01-13 23:25:04.498 DEBUG 21588 --- [ main] org.hibernate.SQL : select children0_.parent_id as parent_i3_1_1_, children0_.folder_id as folder_i1_1_1_, children0_.folder_id as folder_i1_1_0_, children0_.name as name2_1_0_, children0_.parent_id as parent_i3_1_0_ from folder children0_ where children0_.parent_id in ( ?, ?, ? ) 2022-01-13 23:25:04.501 DEBUG 21588 --- [ main] org.hibernate.SQL : select children0_.parent_id as parent_i3_1_1_, children0_.folder_id as folder_i1_1_1_, children0_.folder_id as folder_i1_1_0_, children0_.name as name2_1_0_, children0_.parent_id as parent_i3_1_0_ from folder children0_ where children0_.parent_id in ( ?, ?, ?, ?, ?, ?, ?, ?, ? ) 총 이렇게 4개의 쿼리가 나갔는데요 서론이 길었습니다 선생님 제가 질문할 것은 이겁니다 @BatchSize를 설정하면 하이버네이트는 어떤 알고리즘으로 저 in절의 아이디 값들을 넣는 것일까요> 자료를 찾아봐도 나오는데가 없었고 저스스로 고민을 했을 때는 <1번> 첫번째 select 쿼리가 나갔을 때 A폴더(id = 1)가 영속화 된다. <2번> 2번째 select 쿼리가 나갔을 때 B,C,D 폴더 즉 id가 2,3,4인 폴더들이 영속화가 된다. -> 따라서 3번째 select 쿼리에서 in절의 id들은 이 2,3,4가 되는 것이다. (여기서의 의문점 그럼 앞서 영속화된 A폴더의 id = 1은 안 집어 넣는 알고리즘은 또 뭘까) 이렇게 생각했는데 과연 맞는지 궁금합니다
미해결
Slack 클론 코딩[실시간 채팅 with React]
안녕하세요! 지금까지는 문제 없이 잘 진행하고 있었으나 계속 찾아보고, alecture 폴더 내에 있는 소스코드와 비교를 해보아도 어떤 코드가 문제인지 모르겠어서 질문 글을 남기게 되었습니다. 해당 섹션 마지막에서 액시오스 코드를 작성하고 백엔드에 워크 스페이스를 생성하도록 요청하는 부분이 있는데요, const onCreateWorkspace = useCallback((e) => { console.log('ok'); e.preventDefault(); console.log(newWorkspace); if (!newWorkspace || !newWorkspace.trim()) return; console.log('b'); if (!newUrl || !newUrl.trim()) return; console.log('c'); axios.post('/api/workspaces', { workspace: newWorkspace, url: newUrl, }, { withCredentials: true, }, ).then((response) => { revalidate(); setShowCreateWorkspaceModal(false); setNewWorkspace(''); setNewUrl(''); }).catch((error) => { console.dir(error); toast.error(error.response?.data, { position: 'bottom-center' }); }); }, []); 워크스페이스 이름과, 워크스페이스 url 을 넣고 생성하기 버튼을 누르면 반응이 없어서 위 코드처럼 console.log 를 찍어서 확인해보니 newWorkspace 에 아무런 값이 담기지가 않고 있습니다. 해당 소스코드 및 라인 : https://github.com/Kuass/sleact/blob/master/setting/ts/layouts/Workspace/index.tsx#L32 입니다. onCreateWorkspace = useCallback 에 event 객체도 콘솔에 찍어서 보았으나 값은 정상적으로 있는데.. 왜 이럴까요 강사님 ㅠㅠ..
미해결
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
index.js에서 user.comparePassword를 호출할 때 req.body.passwod로 비밀번호를 인자로 전달하고 뒤에 err, isMatch는 comparePassword 메소드에서 cb(err)과 cb(null, isMatch)로 받아와서 비밀번호가 틀렸습니다 쪽으로 넘어가는 것 같은데 제가 이해한 게 맞을까요...??
해결됨
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 강사님 퀄리티 높은 강의와 디테일좋은 강의 감사드립니다. 머신러닝에도 관심이 있어 공부를 하던와중에 내가직접 서비스를 하려면 백엔드의 지식도 필요할듯하여 감사하게 강의를 듣고있습니다. 머신러닝/딥러닝 서비스를 사용하기위한 백엔드 서비스가 Django 가 좋은것같은데 현업에서도 많은 사용을 하고있나요? (아마 강사님께서도 많은 컨설팅을 해주셔서 아실거라 생각이 들어 질문을 드립니다.) 딥러닝 모델을 웹에서 돌리기위해서는 병렬처리?가 필요할듯한데 Django 에서는 이러한 부분에대한 솔루션이 있는지 또한 궁금합니다. 감사합니다.
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Database "mem:ea62e49b-fd2d-4217-8245-939ed574682c" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (도움말) 자꾸 이런 오류가 떠요ㅠㅠ
미해결
실전! Querydsl
jpaQueryFactory .selectFrom( member ) .fetch() ; jpaQueryFactory .selectFrom( member ) .fetch() ; 이런식으로 테스트 코드를 짠 후 실행시켰는데 select문이 2번 나갔습니다. 제가 이해한 바로는 select문이 한번 나가고 2번째 쿼리에 대해서는 영속성 컨텍스트 1차 캐시에서 가져와서 select문이 안나가야 하는데 2번 나간게 이해가 되질 않습니다..
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요! 강의를 듣다가 문제가 생겨서 연락드렸습니다.. 아래 사진과 같이 8080 포트를 이미 사용중이라는 에러를 보고 해결해보려고 cmd의 netstat -ano 명령어를 사용했습니다. 사진처럼, 8080포트를 사용중인 프로세스가 없는데 ide를 실행하면 8080이 이미 사용중이라고 뜨네요... stackoverflow에서 프로세스에 javaw가 동작하고 있을수도 있다고 해서 해당 프로세스를 찾아봤지만 없었습니다. 재부팅, ide 껏다 키기 등등으로도 해결이 안되는데 그냥 포트를 임의로 8090으로 변경해서 사용하는게 답일까요....?
해결됨
풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
그래프큐엘을 다시 보면서 강의 정주행 해보고 있습니다. 질문: update message 부분을 put 대신에 patch로 리팩토링해도 괜찮을까요? 저는 프론트 위주로만 알고 있어서 api쪽은 단순히 전체 update는 put, 부분적인 data 수정은 patch 정도로만 알고 있는데요, 어떤 경우 put/patch를 쓰는 게 더 좋은지 의견 궁금해서 남깁니다.
미해결
실전! 스프링 데이터 JPA
안녕하세요. 강의 너무 잘 보고 있습니다. JPA와 관련된 질문은 아닌거 같은데 강의를 보다가 항상 궁금했던 점이 언급되어서 이렇게 질문드립니다. 엔티티를 그대로 클라이언트로 넘기면 엔티티가 변경되었을때 API 스팩이 변경되기 때문에 DTO로 변환해서 넘겨줘야 한다고 하셨는데 예를들어 만약에 10개의 API가 Member 정보를 필요로 할 경우(Member 엔티티의 필드가 약 20개 정도 된다고 가정) 각 API 마다 MemberDto 클래스를 모두 생성하고 각 MemberDto에 Member엔티티를 dto로 매핑하는 로직을 모두 작성해야 하나요..? 10개 모두 생성해서 사용하려 하니 클래스 네이밍도 어렵고 코드 중복이 너무 많아지는것 같고, 10개 API 에서 필요로하는 Member 정보를 모두 담은 하나의 MemberDto를 만들어 사용하려 하니 엔티티를 사용할 때의 문제와 같이 MemberDto를 변경하면 10개 API 스팩이 변경되는 문제가 발생합니다.. 제가 생각했을때 제일 최선의 방법은 API마다 리스폰VO 클래스를 만들고 해당 클래스에 static inner 클래스로 MemberDto를 선언하는것인데.. 혹시 실무에서 사용하는 best practice가 어떤거일까요..?
미해결
실전! 스프링 데이터 JPA
이번 강의로 자신감을 얻고 spring-data-jpa로 시스템 구축 해보려고 합니다. 하나하나 신중히 접근중입니다. ㅎㅎ DTO <--> Entity 변환시에 modelmapper, mapstruct 중에 어느걸 많이 사용하시나요? 혹시 강사님은 현업에서 어떤걸 사용하시는지 궁금합니다.
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 QueryDsl 실습 중 에러를 해결하지 못해서 질문 드립니다. QueryDsl 을 사용하던 SpringBoot 프로젝트를 배포하고자 AWS EC2 인스턴스에서 해당 프로젝트 git clone하고 실행을 하려고 하는데 다음과 같은 오류가 납니다. 인텔리제이에서 프로젝트를 실행할 때에는 generated\querydsl 위치에 Qclass 파일들이 잘 컴파일 되었었는데 외부 인스턴스에서 실행시 해당 폴더를 찾을 수 없다고 뜨는데 이유를 모르겠네요 ㅠㅠ 아래는 제가 build.grade에서 작성한 queryDsl 관련 설정입니다. plugins { id 'org.springframework.boot' version '2.5.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'com.querydsl:querydsl-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' compile "com.mysema.querydsl:querydsl-jpa:3.6.3" compile "com.mysema.querydsl:querydsl-apt:3.6.3:jpa" implementation 'junit:junit:4.13.1' implementation 'org.projectlombok:lombok:1.18.18' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2:1.4.199' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation('org.slf4j:jcl-over-slf4j') implementation('ch.qos.logback:logback-classic') } test { useJUnitPlatform() } //def querydslDir = 'src/main/generated' def querydslDir = "$buildDir/generated/querydsl" // (3) querydsl { // (4) library = "com.querydsl:querydsl-apt" jpa = true querydslSourcesDir = querydslDir } sourceSets { // (5) main.java.srcDirs querydslDir } configurations { // (6) querydsl.extendsFrom compileClasspath } compileQuerydsl { // (7) options.annotationProcessorPath = configurations.querydsl } compileQuerydsl.doFirst { if(file(querydslDir).exists() ) delete(file(querydslDir)) }
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
섹션 11. 객체지향 쿼리 언어2- 중급 문법 내의 "페치 조인1 - 기본" 강의를 듣고 작성하는 질문입니다. 안녕하세요 :) https://www.inflearn.com/questions/164472 https://www.inflearn.com/questions/170331 Q1) 제가 헷갈리는 부분과 관련해서 질문들이 있길래 다 살펴봤지만, 제가 명확하게 이해한 것인지 확신을 할 수 없어서 이렇게 질문 남깁니다. 일반 조인 -> 두 객체를 돌려받음, 객체 그래프 채워짐 (객체 그래프가 채워질 꺼라 생각한 이유는, https://www.inflearn.com/questions/170331 의 강사님 답변 "Object[]은 각각 따로 조회하기 때문에 이런 부분을 처리할 때 작업 공수가 많이 들어갑니다." 이 내포하는 뜻이 두 조인의 내부적인 동작에서는 차이가 있지만 결과는 똑같다고 생각해서입니다.) 페치 조인 -> 한 객체를 돌려받음, 객체 그래프 채워짐 제가 이해한 내용이 맞을까요? Q2) 일반 조인시에도 객체 그래프가 채워지는 지 확인하기 위해서, 코드를 직접 짜서 테스트를 돌려봤는데 이해하기 힘든 쿼리가 나가서 추가적으로 질문 남깁니다. (위의 질문에 대한 답변과 유사성이 있을까싶어, 한 질문란에 두개의 질문을 남깁니다. 아니라면 죄송합니다 ㅠㅠ) 해당 테스트 관련 코드와 결과화면을 첨부해두겠습니다. 일반 조인을 통해 작성한 쿼리를 em.createQuery()... 를 통해 결과리스트를 반환받고 하나씩 반복문을 통해 돌려보는데, select query가 추가로 나가는 것을 발견했습니다. member 에서 team 을 조회할 때는 쿼리가 추가로 발생하지 않는데, team에서 member를 조회할 때에 쿼리가 추가로 발생합니다. 처음 작성한 query를 통해 member를 다 받아왔을텐데, 왜 team에서 member를 조회할 때 쿼리가 추가로 발생할까요..? 고민해봐도 모르겠어서 질문 남깁니다. 감사합니다.
미해결
스프링 핵심 원리 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 제목 그대로 수정자 주입이 아닌, 생성자 주입을 해야하는 이유에 대한 설명 중 이해가지 않는 부분이 있어서 질문드립니다 ppt에 " 수정자 주입을 사용하면, setXxx 메서드를 public으로 열어두어야 한다. " 라는 근거가 있는데요. setter는 반드시 public으로 열어야하는 것 아닌가요? , public이 아닌 접근제어자로 setter를 작성하는 경우도 있나요? 그래서 전 이 부분을 수정자 주입을 위해선 setter가 필요없는, 혹은 변경될 위험이 있어서 getter만 작성하고 setter를 작성하지 않는 클래스에도 setter를 포함해야한다. 라고 이해하였는데 이게 의도하신 의미일까요?
해결됨
풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
그대로 디펜더시 다운후에 next,react 파일이 안생기는데 그냥 npx 로 다운받아야하나요? (경로확인했습니다)
미해결
실전! Querydsl
안녕하세요 현재 jpa 모든 강의를 듣고 토이프로젝트를 진행하고 있습니다 질문의 요지는 querydsl을 통해 dto로 조회할때 XXXtoMany 관계의 컬렉션을 함께 조회하고 싶어요 현재 제 상황은 이렇습니다 일기장에 일기를 쓰는데 질문을 통해 일기를 쓰는방식이라 일기장에 사용된 질문이 필요해요 Diary라는 엔티티가 있고 Question이라는 엔티티가 있는데 이 두 엔티티의 관계가 다대다 관계여서 가운데 DiaryItem이라는 엔티티를 두고 다이어리 페이지에 필요한 모든 정보를 한번에 조회하는것이 목적입니다 이런 방식으로 Diary엔티티를 조회할때와 마찬가지로 엔티티에 의존적이지 않게 dto로 받으면서 무한루프에 빠지지 않도록 필요한 정보만 받을 수 있도록 조회를 하는 방법이 궁금해 질문드립니다 같은 방식으로 DiaryDto가 아니라 Diary에 담은뒤 Controller에서 DiaryDto의 생성자를 통해 변환을 하면 정상적으로 값이 담겨 오는데 queryFactory의 fetch를 통해 직접 DiaryDto에 담으면 에러가 발생합니다ㅠㅠ 현재 이방식으로 쿼리를 실행해보면 query specified join fetching, but the owner of the fetched association was not present in the select list 라는 에러가 나옵니다... 어떤에러인지도 궁금하구요ㅠㅠ 도움부탁드립니다ㅎㅎ
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요, 자바 코드로 스프링 빈 등록하기 강좌에서 질문이 있는데요! 세 가지 질문이 있습니다. 1. @Bean public MemberService memberService() { return new MemberService(MemberRepository()); } 이 뜻은 MemberService와 MemberRepository형의 객체가 의존 관계를 맺고 있다는 뜻이고, 따라서 당연히 MemberService에 가면 MemberRepository형의 멤버변수가 선언되어 있는 걸 볼 수 있는데, 스프링 설정 클래스에서 위와같이 의존관계를 넣어줬으니 MemberService에서는 더이상 @Autowired 어노테이션이 생성자에 필요가 없는 거라고 이해하면 될까요? 조금 더 종합적으로 살펴봤을 때, 컴포넌트 스캔 방식일때는 해당 클래스에서 @Autowired 로 주입받는 객체와의 의존관계를 명시하고 주입해줘야 하는 방법 밖에 없고, 이와 같이 직접 자바 코드로 설정파일 이용해 빈을 등록하는 방식에서는 방법 1 : 수업과 같이 설정클래스에서 위에 작성된 코드로 의존주입한다, 단 저런 방식으로 주입할 경우 MemberService에는 생성자에 @Autowired가 필요없어짐 방법 2 : @Bean public MemberService memberService() { return new MemberService(); } 로 작성하고 MemberService 클래스에서 필드나 생성자에 @Autowired로 MemberRespository 빈 객체 주입 명시 이렇게 두 가지 방법이 있는 것으로 이해하면 될까요? 2. 잠깐 지나가는 말씀으로 세터 메서드에 @Autowired가 붙는 방법을 알려 주셨는데, 세터 메서드는 개발자가 직접 호출하지 않아도 스프링이 알아서 호출해주나요? @Autowired가 붙은 생성자를 저희가 직접 호출해준적은 없는 거 같은데, 세터도 동일한지 궁금합니다. 즉 @Autowired를 멤버변수 필드나 세터나 생성자에 붙이면 개발자가 호출할 필요 없이 알아서 스프링이 자동호출도 해주고 의존객체도 연결해주는 것으로 이해해도 되는지요? 3. 의존 주입을 하는 객체(A)와, 주입을 받는 객체(B)는 모두 빈으로 등록되어야 하는지 궁금합니다. 주입되는 인자(A)는 꼭 빈으로 등록된 객체여야 오류가 안 난다는 것은 수업에서도 알려주셔서 명확히 기억이 나는데, 주입을 받는 객체(B)도 항상 빈으로 등록된 객체여야 하나요? 질문이 많고 긴데 읽어주셔서 감사합니다!
해결됨
프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
동균님 안녕하세요. 좋은 강의 공유해주셔서 감사합니다 :) 지금 페이지를 로컬에서 띄워보면서 페이지 분석을 하고 있는데요, Items 페이지의 보드들의 이미지가 깨져서 보입니다. 또한 보드 클릭시 이동하는 링크도 현재 존재하지 않아 리다이렉트되는 것 같습니다. Network탭을 확인해보니 이미지 파일에 대한 Response 가 500 으로 오고 있습니다. land-mfg.com 의 대대적인 홈페이지 개편이 있었던 걸까요..? 참고목적으로 스크린샷 공유드립니다 :)