Javaで循環依存を回避するにはどうすればよいですか? 私はwebserviceを使用していますが、私はどのようにクラスを注入するのかわかりません。私はクラスを注入するためのMyApplicationBinderについて聞いたが、私はそれを使用する方法を知らない?私のプロジェクト構造でjax-rs2と注射の循環依存を避けるにはどうしたらいいですか?
は次のようである。この
1.Controller
-UserController
-TeamController
-TournamentController
private UserService userService = new UserServiceImpl();
//for accessing Service class I used this way how to inject this class in controller
2.Service
-UserServiceImpl
-TeamServiceImpl -TournamentServiceImpl
private UserDAO userDAO = new UserDAOImpl();
//for accessing DAO class I used this way how to inject this class in service
そしてTeamServiceImplクラス内の1つのより多くの問題が、私はTournamentServiceImlクラスのリソースを必要とTournamentServiceImlclassで同時に で私は(TeamServiceImplクラスのリソースを必要とします私はメソッドを呼び出す必要があることを意味します)。明らかに循環依存を引き起こす可能性があります。このような状況を回避する方法
3.DAO
-UserDAOImpl
-TeamDAOImpl
-TournamentDAOImpl
これは
MyApplication.java
@ApplicationPath("/api")
public class MyApplication extends ResourceConfig
{
public MyApplication()
{
register(JacksonJsonProvider.class);
register(MultiPartFeature.class);
registerClasses(UserController.class);
registerClasses(TeamController.class);
registerClasses(TournamentController.class);
registerClasses(FileStorageController.class);
register(new MyApplicationBinder());
}
}
私ResourceConfigのクラスですMyApplicationBinder.java
public class MyApplicationBinder extends AbstractBinder {
@Override
protected void configure() {
}
}
public class TeamServiceImpl implements TeamService
{
private TeamDAO teamDAO = new TeamDAOImpl();
private UserService userService = new UserServiceImpl(); //for accesing UserService
private FileStorageService fileStorageService = new FileStorageServiceImpl();////for accesing FileService
private TournamentService userService = new TournamentServiceImpl();//for accesing TournamentService
..........
}
public class TournamentServiceImpl implements TournamentService
{
private TournamentDAO tournamentDAO = new TournamentDAOImpl();
private UserService userService = new UserServiceImpl();
private TeamService teamService = new TeamServiceImpl();
//cant get this TeamService when we call it occurs circular dependency
private FileStorageService fileStorageService = new FileStorageServiceImpl();
..........
}
私は今、私はあなたがControllerLayer、ServiceLayer、DAOLayerでクラスを注入するために私の状況
1.Howを理解すると思うこのproject.Iで立ち往生しています。この技術の新しい午前私を助けてください?
2.この状況で循環依存を避けるにはどうすればよいですか?
3.Howコンストラクタインジェクションを使用するには?一部の人々は私にこのことについて、適切な指導をしてください。..