上海暂停娱乐场所营业通知,网站优化推广招聘,论坛网站方案,网页制作软件visual目录 3、Beans
3.1、什么是 spring bean#xff1f;
3.2、spring 提供了哪些配置方式#xff1f;
3.3、spring 支持集中 bean scope#xff1f;
3.4、spring bean 容器的生命周期是什么样的#xff1f;
3.5、什么是 spring 的内部 bean#xff1f;
3.6、什么是 spri…目录 3、Beans
3.1、什么是 spring bean
3.2、spring 提供了哪些配置方式
3.3、spring 支持集中 bean scope
3.4、spring bean 容器的生命周期是什么样的
3.5、什么是 spring 的内部 bean
3.6、什么是 spring 装配
3.7、自动装配有哪些方式
3.8、自动装配有什么局限 3、Beans
3.1、什么是 spring bean
1它们是构成用户应用程序主干的对象。
2Bean 由 Spring IoC 容器管理。
3它们由 Spring IoC 容器实例化配置装配和管理。
4Bean 是基于用户提供给容器的配置元数据创建。 3.2、spring 提供了哪些配置方式
基于 xml 配置 bean 所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常包含许多 bean 定义和特定于应用程序的配置选项。它们通常以 bean 标签开头。例如
bean idstudentbean classorg.edureka.firstSpring.StudentBeanproperty namename valueEdureka/property
/bean
基于注解配置 您可以通过在相关的类方法或字段声明上使用注解将 bean 配置为组件类本身而不是使用 XML 来描述 bean 装配。默认情况下Spring 容器中未打开注解装配。因此您需要在使用它之前在 Spring 配置文件中启用它。例如
beans
context:annotation-config/
!-- bean definitions go here --
/beans
基于 Java API 配置
Spring 的 Java 配置是通过使用 Bean 和 Configuration 来实现。
1、 Bean 注解扮演与 bean/ 元素相同的角色。
2、Configuration 类允许通过简单地调用同一个类中的其他 Bean 方法来定义 bean 间依赖关系。
例如
Configuration
public class StudentConfig {Beanpublic StudentBean myStudent() {return new StudentBean();
}
} 3.3、spring 支持集中 bean scope
Spring bean 支持 5 种 scope Singleton - 每个 Spring IoC 容器仅有一个单实例。Prototype - 每次请求都会产生一个新的实例。Request - 每一次 HTTP 请求都会产生一个新的实例并且该 bean 仅在当前 HTTP 请求内有效。Session - 每一次 HTTP 请求都会产生一个新的 bean同时该 bean 仅在当前 HTTP session 内有效。 Global-session - 类似于标准的 HTTP Session 作用域不过它仅仅在基于portlet 的 web 应用中才有意义。Portlet 规范定义了全局 Session 的概念它被所有构成某个 portlet web 应用的各种不同的 portlet 所共享。在 globalsession 作用域中定义的 bean 被限定于全局 portlet Session 的生命周期范围内。如果你在 web 中使用 global session 作用域来标识 bean那么 web会自动当成 session 类型来使用。
仅当用户使用支持 Web 的 ApplicationContext 时最后三个才可用。 3.4、spring bean 容器的生命周期是什么样的
spring bean 容器的生命周期流程如下
1、Spring 容器根据配置中的 bean 定义中实例化 bean。
2、Spring 使用依赖注入填充所有属性如 bean 中所定义的配置。
3、如果 bean 实现BeanNameAware 接口则工厂通过传递 bean 的 ID 来调用setBeanName()。
4、如果 bean 实现 BeanFactoryAware 接口工厂通过传递自身的实例来调用setBeanFactory()。
5、如果存在与 bean 关联的任何BeanPostProcessors则调用 preProcessBeforeInitialization() 方法。
6、如果为 bean 指定了 init 方法 bean 的 init-method 属性那么将调用它。
7、最后如果存在与 bean 关联的任何 BeanPostProcessors则将调用 postProcessAfterInitialization() 方法。
8、如果 bean 实现DisposableBean 接口当 spring 容器关闭时会调用 destory()。
9、如果为bean 指定了 destroy 方法 bean 的 destroy-method 属性那么将调用它。 3.5、什么是 spring 的内部 bean
只有将 bean 用作另一个 bean 的属性时才能将 bean 声明为内部 bean。为了定义 beanSpring 的基于 XML 的配置元数据在 property 或constructor-arg 中提供了 bean 元素的使用。内部 bean 总是匿名的它们总是作为原型。
例如假设我们有一个 Student 类其中引用了 Person 类。这里我们将只创建一个 Person 类实例并在 Student 中使用它。
Student.java
public class Student {private Person person;//Setters and Getters
}public class Person {private String name;private String address;//Setters and Getters
}
bean.xml bean id“StudentBean classcom.edureka.Studentproperty nameperson!--This is inner bean --bean classcom.edureka.Personproperty namename value“Scott/propertyproperty nameaddress value
“Bangalore/property/bean/property
/bean 3.6、什么是 spring 装配 当 bean 在 Spring 容器中组合在一起时它被称为装配或 bean 装配。Spring容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定在一起同时装配 bean。 3.7、自动装配有哪些方式 Spring 容器能够自动装配 bean。也就是说可以通过检查 BeanFactory 的内容让 Spring 自动解析 bean 的协作者。
自动装配的不同模式 no - 这是默认设置表示没有自动装配。应使用显式 bean 引用进行装配。byName - 它根据 bean 的名称注入对象依赖项。它匹配并装配其属性与 XML文件中由相同名称定义的 bean。byType - 它根据类型注入对象依赖项。如果属性的类型与 XML 文件中的一个 bean 名称匹配则匹配并装配属性。构造函数- 它通过调用类的构造函数来注入依赖项。它有大量的参数。autodetect - 首先容器尝试通过构造函数使用 autowire 装配如果不能则尝试通过 byType 自动装配。 3.8、自动装配有什么局限 覆盖的可能性 - 您始终可以使用 constructor-arg 和 property 设置指定依赖项这将覆盖自动装配。基本元数据类型 - 简单属性如原数据类型字符串和类无法自动装配。令人困惑的性质 - 总是喜欢使用明确的装配因为自动装配不太精确。 要想了解更多
千题千解·Java面试宝典_时光の尘的博客-CSDN博客