自動ワイヤードはクラス名に基づいてどのように注入されますか?

@Autowired注解はSpringフレームワークでBeanを自動的に注入するための注釈であり、その中の1つの使用法はクラス名に基づいて注入することです。

@Autowired注解を使用する際、具体的なBean名が指定されない場合、Springは変数のタイプに基づいて自動配線を行います。同じタイプの複数のBeanがある場合、Springは変数名と同じBeanを優先してインジェクションします。変数名と同じBeanが見つからない場合は、同じタイプのBeanがインジェクションされます。

Here is an example:

以下は例です:

@Service
public class UserService {
    @Autowired
    private UserDao userDao;
}

@Repository
public class UserDao {
    // ...
}

上記の例では、UserServiceクラスのuserDaoフィールドは@Autowired注釈を使用して自動的に配線されています。変数名がBean名と異なるため、Springは変数の型に基づいてインジェクションを行い、その結果、UserDaoタイプのBeanがuserDaoフィールドにインジェクションされます。

変数の型が同じで複数のBeanがある場合、SpringはどのBeanを注入すべきか判断できないため例外がスローされることに注意する必要があります。この場合、@Qualifierアノテーションを使用して特定のBean名を指定することができます。

@Service
public class UserService {
    @Autowired
    @Qualifier("userDaoImpl")
    private UserDao userDao;
}

@Repository("userDaoImpl")
public class UserDaoImpl implements UserDao {
    // ...
}

@Repository("userDaoDummy")
public class UserDaoDummy implements UserDao {
    // ...
}

上記の例では、@Qualifierアノテーションを使用して、注入するBeanの名前が”userDaoImpl”であることを指定しました。これにより、UserDaoImpl型のBeanがuserDaoフィールドに注入されることが保証されます。

bannerAds