๐ซ ๊ฐ์
๊ฐ๋ฐํ๋ค๊ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง์ฃผ์ณค๋ค.
***************************
APPLICATION FAILED TO START
***************************
Description:
The dependencies of some of the beans in the application context form a cycle:
commentController defined in file [/Users/youngeun/Desktop/Owori-Server/build/classes/java/main/com/owori/domain/comment/controller/CommentController.class]
↓
commentService defined in file [/Users/youngeun/Desktop/Owori-Server/build/classes/java/main/com/owori/domain/comment/service/CommentService.class]
โโโโโโโ
| storyService defined in file [/Users/youngeun/Desktop/Owori-Server/build/classes/java/main/com/owori/domain/story/service/StoryService.class]
↑ ↓
| heartService defined in file [/Users/youngeun/Desktop/Owori-Server/build/classes/java/main/com/owori/domain/heart/service/HeartService.class]
โโโโโโโ
Action:
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
Process finished with exit code 1
์คํ๋ง ์ํ ์ฐธ์กฐ(Circular Reference)๋ ์๋ก ๋ค๋ฅธ ๋น๋ค์ด ์๋ก ์ฐธ์กฐ๋ฅผ ๋ง๋ฌผ๋ฆฌ๊ฒ ์ฃผ์ ๋๋ฉด์ ์๊ธฐ๋ ํ์์ด๋ผ๊ณ ํ๋ค.
beanA์์ beanB๋ฅผ ์ฐธ์กฐํ๊ฒ๋๋๋ฐ beanB์์๋ beanA๋ฅผ ์ฐธ์กฐํด์ผ ํ๋ ๊ฒฝ์ฐ ์ํ์ฐธ์กฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๐ฟ ์์ธ ํ์
๋์ ๊ฐ์ ๊ฒฝ์ฐ์๋
@Service
@RequiredArgsConstructor
public class StoryService {
private final HeartService heartService;
private final CommentService commentService;
.
.
}
@Service
@RequiredArgsConstructor
public class HeartService {
private final StoryService storyService;
.
.
}
@Service
@RequiredArgsConstructor
public class CommentService {
private final StoryService storyService;
.
.
}
๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง์ ์ํ ์ฐธ์กฐ๊ฐ ์๊ธฐ๊ณ ์์๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ๋ฉด ์ด์ ์คํ๋ง ์ปจํ ์ด๋(IOC)๋ Story Service ๋น์ ์์ฑํ๊ธฐ์ํด Comment Service์ Heart Service๋ฅผ ์ฃผ์ ํด์ค์ผํ๊ธฐ ๋๋ฌธ์ Comment Service์ Heart Service๋ฅผ ์ฐพ์ ๊ฒ์ด๋ค.
๊ทผ๋ฐ Comment Service์ Heart Service๋ฅผ ์์ฑํ๋ ค ํ๋ Story Service ๋ฅผ ์ฃผ์ ํด์ผ ํด์ ๋ค์ Story Service๋ฅผ ์ฐพ๊ฒ๋๋ฉด์ ๋ฌดํ ๋ฐ๋ณต์ด ์๊ธฐ๊ฒ ๋ ๊ฒ์ด๋ค.
โ ํด๊ฒฐ
๋ด๊ฐ ์๊ฐํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
1๏ธโฃ story service ๋์ ์ story repository๋ฅผ ์ฃผ์ ํด์ฃผ๊ธฐ
๊ฐ๊ฐ comment service์ heart service์ story repository๋ฅผ ์ฃผ์ ํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ฒ ํ๋ก์ ํธ์์ ์๋น์ค์์๋ง ์๋น์ค๋ง ๋ฐ๊ธฐ! ๋ก ์ ํด๋์ด์ ์ ์ฉํ ์ ์์๋ค.
๊ทธ๋์ ์๋น์ค๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฐฉ์์ ๊ณ ๋ คํด๋ณด์๋ค.
2๏ธโฃ story service ๋ถ๋ฆฌํ๊ธฐ
story service์๋ง comment service์ heart service๋ฅผ ์ฃผ์ ํด์ฃผ๊ณ ,
๊ทธ๋ฆฌ๊ณ comment service์ heart service์์ ์ฌ์ฉํ๋ ๋ฉ์๋๋ง story expansion service ์ ๋์๋ค.
๊ทธ๋ฆฌ๊ณ comment service์ heart service์์๋ story expansion service๋ฅผ ์ฃผ์ ๋ฐ๋๋ก ๋ง์ด๋ค!
๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ํ์ฐธ์กฐ๊ฐ ์ผ์ด๋์ง ์๋๋ก ์ค๊ณ๋ฅผ ํ๋ ๊ฒ ๊ฐ๋ค.