只用php做网站,淮南官网,网络营销渠道可分为,唐山市住房和城乡建设局门户网站定义 Spring Bcan 的3 种方式分别是:基于XML 的方式配置、基于注解扫播方式配置、基于元数据类的配置。 SpringBean是Spring中最基本的组成单元#xff0c;Spring 官方文档对 Bean 的解释是这样的:In Spring, the objects that form the backbone of your application and tha…定义 Spring Bcan 的3 种方式分别是:基于XML 的方式配置、基于注解扫播方式配置、基于元数据类的配置。 SpringBean是Spring中最基本的组成单元Spring 官方文档对 Bean 的解释是这样的:In Spring, the objects that form the backbone of your application and that are managed by theSpring loC container are called beans. A bean is an object that is instantiated, assembled, and managedby a Spring IoC container. 翻译过来就是:在Spring中构成应用程序主并由SpringIoC容器管理的对象被称为Bean。Bean是一个由SpringIoC容器实例化、组装和管理的对象。 从官方定义中我们可以提取出以下信息 1)Bean 是对象一个或者多个不限定 2)Bean 托管在Spring 中一个叫作IoC的容器中 3)我们的程序是由一个个 Bean 构成的。Spring 是通过声明式配置的方式来定义 Bean的所有创建Bean需要的前置依赖或者参数都通过配置文件先声明Spring 启动以后会解析这些声明好的配置内容。 式 那么我们该如何定义Spring 中的 Bean呢?一般来说Spring Bean的定义配置有3种方法。
1)基于XML的方式配置这种配置方式主要适用于以下两类场景 (1)Bean 实现类来自第三方类库比如 DataSource 等。 (2)需要定义命名空间的配置如 context、aop、mvc等。 举个例子来看一段代码。
beansimport resourceresource1.xml///导入其他配置文件Bean 的定义import resourceresource2,xmI /bean iduserService classcom.gp.s.UserService init-methodinit destory-methoddestory/beanbean idmessage”classjava.lang.Stringconstructor-arg indexo valuetest/constructor-arg/bean
/beans
这段代码是标准的 Spring 配置内容首先导入一个叫作 resourcel.xm标准配置文件。然后导入第二个标准配置文件resource2.xml。接着定义一个叫作 userService的 Bean对应的类是 com.gp.s.UserService并且声明了在userService 实例化之后要用init0方法在userService 销毁之后调用destory0方法。2)基于注解扫描的方式配置,这种配置方式主要适用于开发中需要引用的类,如ControleService、Dao等配置代码如下。
context:component-scan base-packagecom.gp.s!-- 包含的目标类--context:include-filter typeregex” expressioncom.gp.s.mall.*/!-- 排除的目标类--context;exclude-filter typeaspectjexpressioncom.gp.s.mall.*Controller/
/context:component-scan 在这段配置中context:component-scan 相当于使用了 Spring 内置的扫描注解的组ComponentScan 声明了需要扫描的基础包路 com.gp.s 把所有com.gp.s.mall 下面的子包全部纳入扫描范围并且排除了 com.gp.s.mall包面所有以Controller 结尾或者包含 Controller 结尾的类 使用 Spring 容器管理组件的 beanName 规则默认是类名首字母变小写可以自己修改。
Spring 主要提供了 4 种内置的注解来声明 Bean。它们分别是
Controller (声明为控制层组件的Bean)、
Service (声明为业务逻辑层组件的 Bcan)、
Repository (声明为数据访间层组件的当对组件的层次难以定位的时候使用
Component 注解来声明。Bean)
Spring 提供了4个注解这些注解的作用与XML定义 Bean 的作用一样都是将组件交给Spring 容器管理。组件的名称默认是类名 (首字母变小写)可以自己修改。3)基于Java类的配置这种配置方式主要适用于以下两类场景。 (1)需要通过代码控制对象创建逻辑的场景。 (2)实现零配置消除XML 配置文件的场景 同样还是举个例子来看一段代码:
Configurationpublic
class BeansConfiguration {Beanpublic Student student(){Student student new Student();student.setName(三);student.setTeacher(teacher());return student;}Beanpublic Teacher teacher(){Teacher teacher new Teacher();teacher.setName(Tom);return teacher;}
} 通过分析这段代码可以了解到使用基于类的配置需要以下步骤。 1)在 BeansConfiguration 类上配置Configuration 注解表示将 BeansConfiguration 类定义为Bean的元数据。 2)在方法上使用Bean 注解方法名默认就是 Bean 的名称方法返回值就是 Bean 的实例
3)过AmnolationConfgApplicationContext 或子类来启动 Spring 容器从而加载这些已声明好的注解配置。 总结一下定义 Spring Bcan 的3 种方式分别是:基于XML 的方式配置、基于注解扫播方式配置、基于元数据类的配置。 那么Bcan 的配置定义好以后,Spring 又是如何加载这些 Bean 配置并创建 Bean 实例的哪: Spring 解析这些声明好的配置内容将这些配置内容都转化为 BeanDefinition 对多BeanDefinilion 中几平保存了配置文件中声明的所有内容再将 BeanDefinition 保存bcanDcfinitionMap中以beanName 作为key以BeanDefinition 对象作为value。之后Spring容器根据 beanName找到对应的 BeanDefinition再去选择具体的创建策略。