👌Bean 标签的属性?
口语化回答
好的,面试官。bean 是最长使用的标签,如果是使用 xml 形式。最常见的基本属性就是 id,name,class。分别标识唯一的 bean,bean 的别名和实际要注入的类。也可以通过一些属性实现,bean 开始时候的操作,比如init-method,配置的方法,可以在 bean 初始化的时候,进行执行。bean 还有常见的构造函数注入标签,注入 bean 中的属性。以上。
题目解析
应届生常问,有工作经验的基本不问,目的其实就是为了,考察一下你到底有没有实际使用过 spring 的 bean 的配置。
面试得分点
id,name,class,一些初始化属性
题目详细答案
常见属性
id:Bean的唯一标识符。
1 | <bean id="myBean" class="com.example.MyBean"/> |
name:Bean的别名,可以为Bean定义一个或多个别名。
1 | <bean id="myBean" name="alias1,alias2" class="com.example.MyBean"/> |
class:Bean的全限定类名。
1 | <bean id="myBean" class="com.example.MyBean"/> |
scope:Bean的作用域,常见值包括singleton(默认)、prototype、request、session、globalSession、application。
1 | <bean id="myBean" class="com.example.MyBean" scope="prototype"/> |
init-method:Bean初始化时调用的方法。
1 | <bean id="myBean" class="com.example.MyBean" init-method="init"/> |
destroy-method:Bean销毁时调用的方法。
1 | <bean id="myBean" class="com.example.MyBean" destroy-method="cleanup"/> |
factory-method:用于创建Bean实例的静态工厂方法。
1 | <bean id="myBean" class="com.example.MyBeanFactory" factory-method="createInstance"/> |
factory-bean:用于创建Bean实例的工厂Bean的名称。
1 | <bean id="myFactory" class="com.example.MyFactory"/> |
依赖注入相关属性
constructor-arg:用于构造函数注入。
1 | <bean id="myBean" class="com.example.MyBean"> |
property:用于Setter方法注入。
1 | <bean id="myBean" class="com.example.MyBean"> |
其他常用属性
autowire:自动装配模式,常见值包括no(默认)、byName、byType、constructor、autodetect。
1 | <bean id="myBean" class="com.example.MyBean" autowire="byName"/> |
depends-on:指定Bean的依赖关系,即在初始化当前Bean之前需要先初始化的Bean。
1 | <bean id="myBean" class="com.example.MyBean" depends-on="anotherBean"/> |
lazy-init:是否延迟初始化,默认值为false。
1 | <bean id="myBean" class="com.example.MyBean" lazy-init="true"/> |
primary:当自动装配时,如果有多个候选Bean,可以将某个Bean标记为主要候选者。
1 | <bean id="myBean" class="com.example.MyBean" primary="true"/> |
配置 demo
1 | <bean id="myBean" class="com.example.MyBean" scope="singleton" init-method="init" destroy-method="cleanup" lazy-init="true" primary="true" autowire="byType"> |