要求:
保证一些必要的属性在Bean实例化初就得到设置,以便实例化之后就可以直接使用。
要求:Bean必须提供带参数的构造函数
List属性既可以通过<value>注入字符串,也可以通过<ref>注入其他bean
为了简化Xml的配置方式,自Spring2.5之后,越来越多的xml文件采用属性配置方式,引入了一个新的P命名空间。
例如:
通过Spring的Bean配置可以了解所有的Bean信息,比如bean的构造方法,属性信息等。通过这些Spring容器就可以按照某种规则对容器中的bean进行自动装配,而无需显式进行配置。
@Component
@Service
@Repository
@Controller
这四个注解对类进行标注,然后就可以被Spring容器识别为Bean。不同的注解只是为了类本身用途的清晰,并特殊规定。
使用注解配置Bean需要在beans.xml里配置:
使用@Qualifier指定Bean的名称,没有该注解时按类型自动注入。
经测试,使用注解配置时,初始化BeanFactory时需要用ClassPathXmlApplicationContext类进行读取配置文件的方式初始化:
具体原因暂未查明。
注意:Singleton作用域是Spring中的缺省作用域。要在XML中将bean定义成singleton,可以这样配置: <bean …… scope=”singleton”>
考虑下面bean定义:<bean ……. scope=”request”/>
针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例, 且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态, 而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。 当处理请求结束,request作用域的bean实例将被销毁。
考虑下面bean定义:<bean …… scope=”session”/>
针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例, 且该userPreferences bean仅在当前HTTP Session内有效。 与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例, 将不会看到这些特定于某个HTTP Session的状态变化。 当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
考虑下面bean定义:<bean …… scope=”globalSession”/>
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。
--------------------------------------------------------------------------------------------------------------------------------------------
更多精彩文章请访问 刘召考的博客
原文地址:http://blog.csdn.net/lzkkevin/article/details/46621843