Spring配置的可选方案
1. 隐式的bean发现机制和自动配置
2. 在Java中进行显式配置
3. 在XML中进行显式配置

自动化装配bean
spring从两个角度来实现自动化装配

  1. 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean
  2. 自动装配(autowiring):Spring自动满足bean之间的依赖
public interface UserService{void goHome();
}@Component
public class UserServiceImpl implements UserService{public void goHome(){System.out.println("");}
}

@Component 注解表明该类作为组件类,并告知Spring要为这个类创建bean。没有必要显式配置 UserServiceImpl bean,因为这个类使用了@Component 注解,所以spring会为你把事情处理妥当。
不过,组件扫描默认是不开启的。我们还需要显式配置一下Spring,从而命令它去寻找带有@Component注解的类,并为其创建bean。

import org.springframework.context.annotation.componentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan
public class UserConfig{}

@ComponentScan 默认会扫描与配置类相同的包,通过扫描这个包以及这个包下面的所有的子包,查找带有@Component注解的类,并执行操作。
如果更倾向于XML来启用组件扫描的话,那么可以使用Spring context 命名空间的 < context:component-scan > 元素

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="" />
</beans>

为组建扫描的bean命名
Spring应用上下文所有的bean都会给定一个ID,上面的例子虽然没有指定,但spring会根据类名指定(将首字母变为小写),如果我们想的为一个bean设置不同的ID,那么我们可以将代码改为

@Component("driver")
public class UserServiceImpl implements UserService{'''
}

好吧,其实我们也可以不用@Component注解,而是用Java依赖注入规范中提供的@Named注解为bean设置ID

import javax.inject.Named;
@Named("driver")
public class UserServiceImpl implements UserService{'''
}

设置组件扫描的基础包
目前为止我们对@ComponentScan 设置任何属性,这意味着,按照默认规则,会以配置类所在的包作为基础类(base package)来扫描组件。

@Configuration
@ComponentScan("basePackage")
public class UserConfig{}

小扩展
@ComponentScan() 可以设置value或basePackages属性吗,两个都是数组

 @AliasFor("basePackages")String[] value() default {};@AliasFor("value")String[] basePackages() default {};//安全的注入需要bean的ClassClass<?>[] basePackageClasses() default {};

通过为bean添加注解实现自动装配
自动装配就是让Spring自动满足bean依赖的一种方法,在满足依赖的过程中,会在应用上下文中寻找匹配某个需求的其他bean,我们可以利用Spring的@Autowired注解完成。

@Component
public class EduFactory{private UserService userService;@Autowiredpublic EduFactory (UserService  userService){this.userService = userService;}'''
}

在Spring初始化bean之后它会尽可能满足bean依赖,@Autowired可以用在类方法上,假设我们没把该注解在Setter方法上,而放在insertUs方法上,那么该注解发挥的作用还是完全一样的。

@Autowired
public void insertUs(UserService  userService){this.userService = userService;}

不管是构造器还是Setter方法,Spring都会尝试满足方法参数上所声明的依赖, 如果有就封装起来,未发现则会跑出异常,通过**@Autowired(required = false)**注解可以防止报错,但是在代码中要对其判断处理,以防止出现NullPointerExcepton异常。 (预留匹配多个的小坑)
@Autowired是Spring特有注解,我们还可以使用@Inject方法来进行装配

import javax.inject.Inject;
import javax.inject.Named;@Named("driver")
public class EduFactory UserService{@Inject
public UserServiceImpl (UserService userService){this.userService = userService;
}'''
}

SpringBean装配------自动装配相关推荐

  1. spring Bean自动装配

    spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...

  2. IOC操作Bean管理XML方式(xml自动装配)

    目录 IOC操作Bean管理XML方式(xml自动装配) 一.演示自动装配过程 (1)根据 属性名称 装配 步骤一: 步骤二: 步骤三: (2)根据 属性类型 装配 (2.1)根据 类型 自动装配产生 ...

  3. Spring自学日志03(作用域,自动装配)

    bean的作用域 Singleton(单例模式,是默认spring的) <bean id ="user2" class="com.injection.User&qu ...

  4. Spring自动装配(autowire)篇

    什么是自动装配 自动装配帮我们省去了 property标签配置操作,Spring会自动根据 属性名称,类型,构造器来进行自动注入. 例如不进行自动装配配置如下: <bean id="u ...

  5. Spring(三)之自动装配、表达式

    自动装配 例子 byName byType 将bean排除在自动装配之外 依赖检查 spring表达式 自动装配 自动装配(autowire)协作者 Spring IoC容器可以自动装配(autowi ...

  6. Spring(二)--------Spring配置、DI依赖注入、Bean自动装配

    Spring(二)--------Spring配置.DI依赖注入.Bean自动装配 5.Spring配置 5.1 别名 设置别名:第一种方式alias <!--其中name为ID的对应值--&g ...

  7. Spring之IOC自动装配

    7.Bean的自动装配 自动装配是Spring满足bean依赖一种方式! Spring会在上下文中自动寻找,并自动给bean装配属性! 在spring中有三种装配的方式 在xml中显示的配置 在jav ...

  8. Spring04:自动装配

    Spring04:自动装配 Spring中bean有三种装配机制 在xml中显式配置 在java中显示配置 隐式的bean发现机制和自动装配 自动装配 组件扫描(component scanning) ...

  9. Spring框架—③依赖注入DI、Bean作用域及自动装配

    依赖注入 DI,Dependency injection 依赖: 指bean对象的创建依赖于Spring容器 注入: 指Bean对象所依赖的资源,由容器来设置和装配 在beans.xml中配置 1.常 ...

最新文章

  1. UE4 使用VaRest的最佳实践
  2. 论发展的十大关系。总结过去,正视未来!!!
  3. Copying to tmp table Problem Solving
  4. oracle12C推SCN,Oracle 的 DBMS_SCN 修正以及SCN的auto-rollover新特性
  5. 工作流框架的设计要点
  6. Oracle定时任务使用
  7. 遗传算法求解多元函数极值点-C++实现
  8. virtualbox 设置静态IP
  9. 史上首次!个人所得税退税来了!如何退?怎么操作?
  10. 更新fielddata为true_[翻译]Elasticsearch重要文章之五:预加载fielddata
  11. 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?
  12. 比較好的JAVA網站
  13. 哪一个属于计算机外存储器,下边哪一个属于计算机的外存储器()
  14. 商品规格表的制作 mysql_商品规格设计
  15. resultType=int 和 resultType=java.lang.Integer
  16. 汉诺塔问题(递归算法思想)
  17. oracle序列无缓存,oracle 序列跳号现象
  18. Android 新闻客户端案例
  19. 网桥与交换机的区别,以及和中继器,集线器 之间的联系及各自的功能
  20. 陶瓷气体放电管(GDT)的评定及试验条件-优恩

热门文章

  1. 智慧景区:EasyCVR视频+智能分析,助力景区智慧化服务监管
  2. 2019年大学计算机排名,2019年USNews大学计算机专业排名!
  3. 好玩的python3代码_python好玩的项目—色情图片识别代码分享
  4. 慕课-初识 学习ts笔记
  5. [ 可视化 ] 经典网络模型 —— Grad-CAM 详解与复现
  6. bat批处理循环执行adb命令,非科班面试之旅
  7. 使用74LS164和74LS165实现简单I/O扩展
  8. C++primer plus编程练习参考答案
  9. 12个基本的在线设计竞赛目录
  10. VMware Horizon 8 2012 -- 用于管理虚拟桌面 (VDI)、应用和在线服务的领先平台