1、 传统XML配置方式
- SpringXML配置bean元素相关属性
作为 Spring 核心机制的依赖注入,改变了传统的编程习惯,对组件的实例化不再由应用程序完成,转而 交由 Spring 容器完成,在需要时注入应用程序中,从而对组件之间依赖关系进行了解耦。这一切都离不 开 Spring 配置文件中使用的 元素。
Spring 容器可以被看作一个大工厂,而 Spring 容器中的 Bean 就相当于该工厂的产品。如果希望 这个大工厂能够生产和管理 Bean,这时则需要告诉容器需要哪些 Bean,以及需要以何种方式将这些 Bean 装配到一起
元素的常用属性

2.bean 的id 和 name的区别
id和name都是spring 容器中bean 的唯一标识符。
1.id: 一个bean的唯一标识 ,命名格式必须符合XML ID属性的命名规范
2.name: 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3”,用逗号 或者分号或者空格隔开。如果没有id,则name的第一个名称默认是id
spring 容器如何处理同名bean(同名bean:多个bean 有相同的 name 或者 id,称之为同名bean)
同一个spring配置文件中,bean的 id、name是不能够重复的,否则spring容器启动时会报错。
如果一个spring容器从多个配置文件中加载配置信息,则多个配置文件中是允许有同名bean的,并 且后面加载的配置文件的中的bean定义会覆盖前面加载的同名bean。 1.在spring同一个配置文件中,不能存在id相同的两个bean,否则会报错。
2.在两个不同的spring配置文件中,可以存在id相同的两个bean,启动时,不会报错。这是因为 spring ioc容器在加载bean的过程中,类DefaultListableBeanFactory会对id相同的bean进行处理:后加 载的配置文件的bean,覆盖先加载的配置文件的bean。DefaultListableBeanFactory类中,有个属性allowBeanDefinitionOverriding,默认值为true,该值就是用来指定出现两个bean的id相同 的情况下,如何进行处理。如果该值为false,则不会进行覆盖,而是抛出异常。
3.spring 容器如何处理没有指定id、name属性的bean
如果 一个 bean 标签未指定 id、name 属性,则 spring容器会给其一个默认的id,值为其类全名。
如果有多个bean标签未指定 id、name 属性,则spring容器会按照其出现的次序,分别给其指定 id 值 为 “类全名#1”, “类全名#2”
2、 Spring XML配置方式配置Bean
XML配置文件方式配置Bean
编写测试类方法

3、 基于Java注解的配置方式 在 Spring 中,尽管使用 XML 配置文件可以实现 Bean 的装配工作,但如果应用中 Bean 的数量较多, 会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难
Java 从 JDK 5.0 以后,提供了 Annotation(注解)功能,Spring 也提供了对 Annotation 技术的全面支 持。
@Component
可以使用此注解描述 Spring 中的 Bean,但它是一个泛化的概念,仅仅表示一个组件(Bean), 并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可,默认情况下生成的id名称为类 名称的首字母小写。
@Repository
用于将数据访问层(DAO层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
@Service
通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
@Controller
通常作用在控制层,用于将控制层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
@Autowired
默认按照 Bean 的类型进行装配。 用于对 Bean 的属性变量、属性的 Set 方法及构造函数进行标注,配合对应的注解处理器完成 Bean 的自动配置工作。
@Resource
其作用与 Autowired 一样。
其区别在于 @Autowired 默认按照 Bean 类型装配,而 @Resource 默认按照 Bean 实例名称进行 装配。
@Resource 中有两个重要属性:name 和 type。 Spring 将 name 属性解析为 Bean 实例名称,type 属性解析为 Bean 实例类型。如果指定 name 属性,则按实例名称进行装配;如果指定 type 属性,则按 Bean 类型进行装配。 如果都不指定,则先按 Bean 实例名称装配,如果不能匹配,则再按照 Bean 类型进行装配;如果 都无法匹配,则抛出 NoSuchBeanDefinitionException 异常。 @Qualifier
与 @Autowired 注解配合使用,会将默认的按 Bean 类型装配修改为按 Bean 的实例名称装配, Bean 的实例名称由 @Qualifier 注解的参数指定。
@value 给属性赋值
4、 基于类的配置方式 @Configuration
编写类:

测试方法:

本文详细介绍了Spring中Bean的配置方法,包括传统的XML配置、Bean的id与name区别、XML配置方式、Java注解配置以及基于类的配置。重点讨论了Bean的id和name的唯一性,以及在不同配置文件中同名Bean的处理。此外,还提到了@Autowired、@Resource和@Qualifier等注解在Bean自动装配中的作用。
1299

被折叠的 条评论
为什么被折叠?



