Spirng学习笔记之bean和BeanFactory(二)

来源:互联网 发布:剑三南风萝莉捏脸数据 编辑:程序博客网 时间:2024/05/29 14:41

1、Spring允许通过一个String数组指定多个配置文件,如前面所讲;Spring还允许我们通过将多个配置文件引入到一个文件中,进行配置文件集成。如以beans2.xml中引入com/test/beans1.xml为例:<import resource="classpath=com/test/beas1.xml">,这样在启动Spring容器的时候就只要指定一个配置文件,就能启动所有配置文件了。
2、bean作用域:
singleton:单实例存在,获取和返回的都是同一个实例
prototype:每次获取返回的都是新的实例
request:每次http请求都会返回一个新的bean实例,仅适用于WebApplicationContext环境
session:同一个http共享同一个bean实例,不懂http使用不同的bean实例,仅适用于WebApplicationContext环境
globalSession:同一个全局Session共享同一个bean,仅适用于WebApplicationContext环境
3、Spring 2.0以后开始引入基于注解配置方式,示例:

import org.springframework.stereotype.Component;//通过Repository定义一个DAO的Bean/*******使用@Component注解在UserDAO类声明处对类进行标注,便可以使其被Spring容器识别,自动将其转换为容器管理     bean,等效于:<bean id="userDAO" class="UserDAO"/>*******/@Component("userDAO");public class UserDAO{    ......}

除了@Component外,还有另外三个功能基本等效的注解:
@Repository:用于对DAO实现类进行标注;
@Service:用于对Service实现类进行标注;
@Controller:用于对Controller实现类进行标注。
4、Spring 2.5以后还可以通过context命名控件,提供通过扫描类包以应用注解定义bean的方式,如示例:

<?xml version="1.0" encoding="UTF-8"?><!--生命context命名空间--><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.3w.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/contex/spring-context-3.0.xsd"><!--扫描类包以应用注解定义的bean--><!--base-package就是要扫描的基类包,Spring容器会获取这个基类里扫描到的用注解定义的bean--><context:component-scan base-package="PackageToScan"/>

如果仅希望扫描特定的类,可以使用resource-pattern属性过滤特定的类:

<!--注意resource-pattern仅能按资源名称对基包中的类进行过滤,如果要过滤其他情况,可以使用<context:component-scan>的子元素进行过滤--><context:component-scan base-package="PackageToScan" resource-pattern="SpecifiedClasses"/>

5、其他注入注解:
@Autowired:默认按类型匹配方式,在容器查找匹配的bean,当仅有一个匹配的bean时,Spring将其注入到@Autowired标注的变量中。如果希望Spring即使找不到匹配的Bean完成注入也不要抛出异常,就可以使用@Autowired(required=false)进行注解。
@Qualifier:可以限定bean的名称。
@Scope指定bean的作用范围

0 0
原创粉丝点击