Spring 的 @Primary 注解


簡單的說,就是當Spring容器掃描到某個接口的多個 bean 時,如果某個bean上加了@Primary 注解 ,則這個bean會被優先選用,如下面的例子:

@Component
 public class FooService {

     private FooRepository fooRepository;

     @Autowired
     public FooService(FooRepository fooRepository) {
         this.fooRepository = fooRepository;
     }
 }

 @Component
 public class JdbcFooRepository extends FooRepository {

     public JdbcFooRepository(DataSource dataSource) {
         // ...
     }
 }

 @Primary
 @Component
 public class HibernateFooRepository extends FooRepository {

     public HibernateFooRepository(SessionFactory sessionFactory) {
         // ...
     }
 }

因為 HibernateFooRepository 上面有注解@Primary,所以它將優先JdbcFooRepository被注入到 FooService中。這在大量應用組件掃描時經常出現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM