Spring获取Bean有以下几种方式:
- 使用@ComponentScan注解扫描指定包路径下的所有类,通过@Autowired注解自动注入。
@Component public class MyClass { @Autowired private MyBean myBean; //... }
- 使用@Configuration注解配置JavaConfig类,使用@Bean注解定义Bean,通过@Autowired注解自动注入。
@Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } //... } @Component public class MyClass { @Autowired private MyBean myBean; //... }
- 使用@Import注解引入其他配置类,通过@Autowired注解自动注入。
@Configuration public class AppConfig1 { @Bean public MyBean myBean1() { return new MyBean(); } //... } @Configuration public class AppConfig2 { @Bean public MyBean myBean2() { return new MyBean(); } //... } @Component @Import({AppConfig1.class, AppConfig2.class}) public class MyClass { @Autowired private MyBean myBean1; @Autowired private MyBean myBean2; //... }
- 使用@ImportResource注解引入XML配置文件,通过@Autowired注解自动注入。
@Configuration @ImportResource({"classpath:applicationContext.xml"}) public class AppConfig { //... } @Component public class MyClass { @Autowired private MyBean myBean; //... }
- 使用ApplicationContext的getBean方法获取Bean。
@Component public class MyClass { private MyBean myBean; @Autowired private ApplicationContext applicationContext; @PostConstruct public void init() { myBean = applicationContext.getBean(MyBean.class); } //... }