织梦网站定时,网页设计分类,网站死链检测,如何在百度上添加自己的店铺Bean是什么
Bean 是指 Java 中的可重用软件组件,容器会根据提供的元数据来创建和管理这些 Bean,也包括它们之间的依赖关系。Spring 容器对 Bean 并没有太多的要求,无须实现特定接口或依赖特定库,只要是最普通的 Java 对象即可,这类对象也被称为 POJO(Plain Old Java Obj…Bean是什么
Bean是指 Java 中的可重用软件组件,容器会根据提供的元数据来创建和管理这些 Bean,也包括它们之间的依赖关系。Spring 容器对 Bean 并没有太多的要求,无须实现特定接口或依赖特定库,只要是最普通的 Java 对象即可,这类对象也被称为 POJO(Plain Old Java Object)。 JavaBeans 是 Java 中一种特殊的类,可以将多个对象封装到一个对象(Bean)中。特点是可序列化,提供无参构造器,提供Getter方法和Setter方法访问对象的属性。一个 Bean 的定义中,会包含如下部分, Bean 的名称,一般是 Bean 的id,也可以为 Bean 指定别名(alias);Bean 的具体类信息,这是一个全限定类名;Bean 的作用域,是单例(singleton)还是原型(prototype);依赖注入相关信息,构造方法参数、属性以及自动织入(autowire)方式;创建销毁相关信息,懒加载模式、初始化回调方法与销毁回调方法。 Bean 的依赖关系
依赖注入,Spring 容器管理依赖就是管理 Bean 之间的依赖。 两种基本注入方式 1. 基于构造方法的注入,是通过构造方法来注入依赖。对应的 XML 配置文件需要使用constructor-arg/传入构造方法所需的内容。constructor-arg/的可配置属性如下, 属性 作用 value 要传给构造方法参数的值 ref 要传给构造方法参数的 Bean ID type 构造方法参数对应的类型 index 构造方法参数对应的位置,从 0 开始计算 name 构造方法参数对应的名称 2. 基于Setter方法的注入,是通过 Bean 的Setter方法来注入依赖。 用代码实现两种注入方式,如下, public class Hello { private String name;
public Hello(String name) { this.name = name; }
public String hello() { return "Hello World! by " + name; }
}// 通过构造方法配置 Bean
// 使用constructor-arg/传入构造方法所需的内容
// constructor-arg中有不少属性可以配置
?xml version="1.0" encoding="UTF-8"?
beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"
bean id="hello" class="learning.spring.helloworld.Hello" constructor-arg value="Spring"/ /bean
/beans// 通过 Setter方法配置 Bean
// property/中的value属性是直接注入的值,用ref属性则可注入其他 Bean
bean id="..." class="..." property name="xxx" !-- 直接定义一个内部的Bean -- bean class="..."/ /property
property name="yyy" !-- 定义依赖的Bean -- ref bean="..."/ /property
property name="zzz" !-- 定义一个列表 -- list valueaaa/value valuebbb/value /list /property
/bean 自动织入(autowire)
手动配置依赖在 Bean 少时还能接受,当 Bean 的数量变多后,这种配置就会变得非常繁琐。让 Spring 容器替我们自动进行依赖注入,这种机制就叫自动织入。自动织入有几种模式,如下, 名称 说明 no 不进行自动织入 byName 根据属性名查找对应的 Bean 进行自动织入 byType 根据属性类型查找对应的 Bean 进行自动织入 constructor 同byType,但用于构造方法注入 在bean/中可以通过autowire属性来设置使用何种自动织入方式,也可以在beans/中设置default-autowire属性指定默认的自动织入方式,Spring Framework 2.0也可以直接使用@Autowired注解。 自动织入时需要注意以下事项, 开启自动织入后,仍可以手动设置依赖,手动设置的依赖优先级高于自动织入;自动织入无法注入基本类型和字符串;对于集合类型的属性,自动织入会把上下文里找到的 Bean 都放进去,但如果属性不是集合类型,有多个候选 Bean 就会有问题。 为了避免第三点问题,可以将bean/的autowire-candidate属性设置为false,也可以在期望的候选 Bean 的bean/中将primary设置为true,这表明在多个候选 Bean 中该 Bean 是主要的(如果使用基于 Java 类的配置方式,我们可以通过选择@Primary注解实现一样的功能)。 指定 Bean 的初始化顺序
Spring 容器会根据依赖情况自动调整 Bean 的初始化顺序。有时 Bean 之间的依赖并不明显,容器可能无法按预期初始化,这时可以自己指定 Bean 的依赖顺序。bean/的depends-on属性可以指定当前 Bean 还要依赖哪些 Bean(基于 Java 类的配置方式支持@DependsOn注解实现一样的功能)。
Bean 的三种配置方式
Spring 容器的元数据配置本质上就是配置 Bean(AOP 和事务的配置背后也是配置各种 Bean),Bean的配置姿势就显得比较重要了。 Spring Framework 提供了不同风格的配置方式,这几种方式没有明确的优劣之分,很多时候也可以混合使用。 1. 早期仅支持 XML 配置方式; 2. Spring Framework 2.0 引入了基于注解的配置方式; 3. Spring Framework 3.0 又增加了基于 Java 类的配置方式。 基于 XML 文件的配置
Spring Framework 提供了beans/Schema 配置 Bean,需要配合使用 ApplicationContext 类把 Bean 配置注入到容器中。
基于注解的配置
Spring Framework 2.0 引入了@Required注解,Spring Framework 2.5 又引入了@Autowi