次の例で依存性注入を使用しますか?
@Scope("prototype")
@Component
public class Order{
@Autowired
public Order(User user,List<OrderItem> items,.......){
今どこか別の場所:
@Component
public class PersistOrder{
@Autowired
Provider<Order> orderProvider;
public void prepareOrder() {
Order order = orderProvider.get();
JSR-330が述べているように、Providerのget()メソッドはOrderの新しいインスタンスを返しますが、どのオブジェクトが新しいorderのコンストラクターに渡されますか?ご覧のとおり、注文には独自の依存関係があり、実際の注文オブジェクトをメソッドに取得する前に注入する必要があります。
DIを使用しない場合は、必要なすべての引数を作成し、それらを新しい順序のコンストラクターに渡すだけです。では、ここでDIを使用する必要がありますか?
編集:
これは、コードがDIなしで表示されるものです。
@Component
public class PersistOrder{
public void prepareOrder() {
User user=userDao.get(userId);
List<OrderItem> orderItems=orderItemDao.getAll(orderItemIds);
Order order = new SmartPhoneOrder(user,orderItems);
ご覧のとおり、私はユーザーと注文アイテムのIDを持っており、DAOからそれらのインスタンスを取得できます。次に、これらのインスタンスをOrderのサブクラスのコンストラクターに渡して、インスタンスを取得します。プロセスは私には非常に明確に思えます。つまり、コードがPersistOrderクラスとOrderクラスの間のデカップリングを楽しむことができるように、DIでこの作業をどのように行うことができますか?または、この例でDIを使用すると、ロジックがより複雑になりますか?