常见的Spring项目中,bean对象要么通过XML文件注入,要么通过注解注入,其实,Spring中还可以通过Java配置类来进行bean的注入。
和传统xml方式和注解方式不同的是,不管是xml还是注解注入,都离不开xml文件,xml注入全程在xml中进行,注解方式需要在xml中配置需要注解注入的包,而Java配置类,则完全不需要xml文件,只有Java文件。
其实,就是用一个Java类来代替xml文件,这个类和xml文件的作用是一样的,都是为了给Spring容器注入bean。
在SpringBoot中,这种bean注入方式大量出现,有很多直接学习SpringBoot的同学,很容易把Java配置类当做SpringBoot的特点,其实不然,Java配置类来注入bean,其实也是Spring的功能,只不过在传统Spring项目中使用较少,在SpringBoot中被大量使用而已。
下面举个使用Java配置类来进行bean注入的例子:
1.先随便创建一个对象:
比如User()
public class User {
private String name = "小明";
}
2.编写一个Config配置类:(作用等同xml文件)
用@Configuration进行注解的,就是配置类,在配置类中,写返回值是User类型的方法,这里需要注意,方法名就是注入的bean的id,可以根据方法名获取对象,用@Bean来标注。
@Configuration
public class MyConfig {
@Bean
public User user(){
return new User();
}
}
3.在配置类中有方法返回值得那些类,其实和在xml配置了注解约束的效果是一样的,因此,要想把这些对象注入bean,可别忘了给类上面加上注解:
@Component
public class User {
private String name = "小明";
}
4.在容器中取出bean使用:
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(MyConfig.class);
User user= (User) applicationContext.getBean("user");
最后,补充一下,既然Java配置类和xml作用一样,那么,xml可以整合几个xml文件,Java配置类也可以:在@Configuration下面,再加一个@Import的注解,就可以实现整合多个Java配置类,括号中是配置类的反射对象。
@Configuration
@Import(MyConfig2.class)