Spring其实就是一个大型的工厂,而Spring容器中的Bean就是该工厂的产品.对于Spring容器可以生产那些产品,则取决于配置文件中配置。spring
对于咱们而言,咱们使用Spring框架所作的就是两件事:开发Bean、配置Bean。安全
bean session
id框架
name.net
classprototype
init-method:Bean实例化后会马上调用的方法线程
destory-method:Bean从容器移除和销毁前,会调用的方法xml
factory-method:运行咱们调用一个指定的静态方法,从而代替构造方法来建立一个类的实例。对象
scope:Bean的做用域,包括singleton(默认),prototype(每次调用都建立一个实例), request,session, global-session(注意spring中的单例bean不是线程安全的)接口
autowired:自动装配 byName, byType, constructor, autodetect(首先阐释使用constructor自动装配,若是没有发现与构造器相匹配的Bean时,Spring将尝试使用byType自动装配)
Id:肯定该Bean的惟一标识符,容器对Bean管理、访问、以及该Bean的依赖关系,都经过该属性完成。Bean的id属性在Spring容器中是惟一的。
Class:指定该Bean的具体实现类。注意这里不能使接口。一般状况下,Spring会直接使用new关键字建立该Bean的实例,所以,这里必须提供Bean实现类的类名。
容器中Bean的做用域
Singleton:单例模式。在整个SpringIoC容器中,使用singleton定义的Bean将只有一个实例。
Prototype:原型模式。每次经过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例。
request:对于每次HTTP请求,使用request定义的Bean都将产生一个新的实例,即每次HTTP请求都会产生不一样的Bean实例。固然只有在WEB应用中使用Spring时,该做用域才真正有效。
session:对于每次HTTPSession,使用session定义的Bean都将产生一个新的实例时,即每次HTTP Session都将产生不一样的Bean实例。同HTTP同样,只有在WEB应用才会有效。
global session:每一个全局的HTTPSession对应一个Bean实例。仅在portlet Context的时候才有效。
比较经常使用的singleton和prototype。若是一个Bean实例被设置为singleton,那么每次请求该Bean时都会得到相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为。若是一个Bean实例被设置为prototype,那么每次请求该di的Bean,Spring都会建立一个新的Bean实例返回给程序,在这种状况下,Spring容器仅仅使用new关键字建立Bean实例,一旦建立成功,容器将不会再跟踪实例,也不会维护Bean实例的状态。
若是咱们不指定Bean的做用域,则Spring会默认使用singleton做用域。
bean 的注解:
2、注解分为两类:
一、一类是使用Bean,便是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;好比@Autowired , @Resource,能够经过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
二、一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一块儿,把对象、属性、方法完美组装。