id属性:
Bean 的唯一标识符,Spring 容器对 Bean 的配置和管理都通过该属性完成,就相当于给 它起一个名字,到时候调用的时候就通过id来调用
class属性:
该属性指定了 Bean 的具体实现类,它必须是一个完整的类名,即类的全限定名。就 相当于是把类给引入进去
scope属性:
用于设定 Bean 实例的作用域,属性值可以为 singleton(单例)
、prototype(原型)
、request、session 和 global Session。其默认值是 singleton。
singleton:是单例,它的意思是你通过容器创建的对象,就只有一个对象,就算你创建的多个对象,其实它们还是同一个,因为他们的地址是一样的。当为singleton的时候,创建对象的时机是在引入配置文件的时候就已经创建好了。
prototype:是多例,可以通过容器创建多个对象,每个对象的地址是不一样的,它创建对象的时机也跟singleton是不一样的,prototype创建对象的时机是在调用getBean的时候才会创建对象
关于getBean方法:
有两种API,一种是传字符串,就是Bean里面的ID,一种是传字节码文件。
第一种,传字符串:
通过这种方式来创建的对象,是需要进行强制转换的,因为它的返回类型是一个Obeject类型,Obeject转换为它的子类,向下转型所以需要强制转换。但它也有一个好处,当容器种有多个关于userService对象的时候,可以通过Bean的id来进行唯一标识。
第二种,传字节码文件。
通过这种方式来创建对象是不需要进行强制转换的,但是当容器种有多个UserService对象的时候,用这种方法是会报错的。