我最近开始探索Spring Boot。我看到有两种方法可以在Beans中定义Spring Boot

  • 在用@Bean注释的类中定义@SprinBootApplication
  • 在带有@Bean注释的类中定义@Configuration

  • 我也对stereo-type annotation @Repository @Service @Controller等感到困惑。

    有人可以解释一下这些注释如何进行依赖注入吗?

    最佳答案

    是的,有可能。
    您可以在任何@Configuration或@SpringBootApplication类中使用@Bean,或者使用诸如@ Service,@ Component @Repository等的批注明确标记Bean类。

    @服务或@Component

    当您使用@Service或@Compoenent标记一个类,并且如果spring的注释扫描范围允许它到达包时,spring会将这些类的实例注册为spring beans
    您可以使用@ComponentScan提供要在扫描期间包含/排除的软件包

    @Bean
    @Beans在工厂方法上标记,该方法可以创建特定类的实例。

    @Bean
    public Account getAccount(){
      return new DailyAccount();
    }
    

    现在在您的应用程序中,您可以简单地使用@Autowire Account,spring会在内部调用其工厂方法getAccount,该方法又返回DailyAccount的实例。

    使用@Bean与@Service或@Compoenent有一个简单的区别。
    第一个使您的豆彼此松散耦合。
  • 在@Bean中,您可以灵活地更改帐户实现,甚至无需更改任何帐户类。
  • 考虑一下,如果您的类实例化是一个多步骤操作,例如读取属性值等,那么您可以在@Bean方法中轻松地做到这一点。
  • 如果您没有对要实例化的类的源代码访问权,
  • @Bean也可以提供帮助。
  • 09-20 19:37