装配bean

三种装配bean方式

第一种:自动化装配bean

· 组件扫描(component scanning):Spring会自动发现应用上下文所创建的bean。

    @Component注解。这个简单的注解表明该类会作为组件类,并告知Spring要为这个类创建bean。组件扫描默认是不启动的,需要显示配置Spring,利用@ComponentScan默认会扫描与配置类相同的包下的@Component注解。

    Spring应用上下文中所有的bean都会给定一个ID,默认是将类名的第一个字母变为小写。如果想自定义:方法一:那就将期望的id值传递给@Component注解;方法二:使用Java依赖注入规范中的@Named注解设置ID。

    设置组件扫描的基础包,@ComponentScan默认是以配置类所在的包扫描组件。自定义有:方法一:在@ComponentScan的value属性中指明包的名称。方法二:或者basePackages属性设置,可以设置多个,设置成一个数组即可。@ComponentScan也可以扫描包中的类或接口,使用basePackageClasses属性所设置的类,这些类所在的包将会是组件扫描的基础包。

· 自动装配(autowiring):Spring自动满足bean之间的依赖

    实现自动装配方法有:方法一:@Autowired注解,该注解不仅可以用在构造器上,还可以用在setter方法上,可以用在类的任何方法上。如果没有匹配的bean,那么在应用上下文创建的时候Spring会抛出异常,避免于此,可以将required属性设置为false。与@Autowired注解功能相似的有@Inject来源于Java依赖注入规范。

第二种:Java代码装配bean

·在需要将第三方库中的组件装配到应用中,是无法使用@Component和@Autowired注解进行自动化装配的。所以需要显示装配:Java和xml。最好java装配代码不要包含业务逻辑,也不要侵入到业务逻辑代码中。

显式配置Spring方法有三种

  First:创建配置类。@Configuration注解:表明这个类是配置类,该类包含在Spring应用上下文中如何创建bean的细节。

   Second:声明bean。@Bean注解:告诉Spring这个方法返回一个对象,该对象注册为Spring应用上下文中的bean,方法体中包含了最终产生bean实例的逻辑。默认情况下,bean的ID与注解的方法名是一样的,如果想自定义可以通过属性name重命名。

总结:@Bean注解的方法可以采用任何必要的Java功能产生bean实例,构造器和setter方法只是两个简单样例。

    Third:借助JavaConfig实现注入,最简单的方式:引用创建bean的方法。默认情况下,Spring中的bean都是单例的,所以可以将一个实例注入到任意数量的其他bean之中。通过调用方法来引用bean方式会有点令人困惑,所以可以将需要注入的类作为参数。

由于本人喜欢Java配置所以xml配置没有总结。

导入,混合配置

· 在JavaConfig中引用XML配置

使用@ImportResource注解将xml文件导入到JavaConfig中

 导入JavaConfig:方法一:在一个JavaConfig中使用@Import注解导入JavaConfig;方法二:创建一个更高级别的javaConfig,使用@Import注解将两个配置类组合起来。

· 在XML配置中引用JavaConfig

    导入其他XML配置文件。不能导入JavaConfig类;可以通过配置JavaConfig。

总结:Spring框架的核心是Spring容器。容器负责管理应用中组件的生命周期,他会创建这些组件并保证它们的依赖能够得到满足,让组件完成任务。尽可能使用自动化配置,避免不了显式配置,优先选择Java配置,因为更加强大,类型更安全,易于重构。  

你可能感兴趣的:(装配bean)