码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 复习笔记

时间:2015-12-14 01:29:55      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

1. 使用外部属性文件

    在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean 配置相分离

    Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory 后置处理器, 这个处理器允许用户将 Bean 配置的部分内容外移到属性文件中. 可以在 Bean 配置文件里使用形式为 ${var} 的变量,

    PropertyPlaceholderConfigurer 从属性文件里加载属性, 并使用这些属性来替换变量.

    Spring 还允许在属性文件中使用 ${propName},以实现属性之间的相互引用。

    Spring 2.5 之后: 可通过 <context:property-placeholder> 元素简化: <beans> 中添加 context Schema 定义

    在配置文件中加入如下配置:      

<!-- 导入资源文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置 C3P0 数据源 -->
<bean id="dataSource"
           class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <property name="user" value="${jdbc.user}"></property>
      <property name="password" value="${jdbc.password}"></property>
      <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> 
      <property name="driverClass" value="${jdbc.driverClass}"></property>
      <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
      <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>

 

2. 在 classpath 中扫描组件:

    组件扫描(component scanning): Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件. 

    特定组件包括:

    @Component: 基本注解, 标识了一个受 Spring 管理的组件

    @Respository: 标识持久层组件

    @Service: 标识服务层(业务层)组件

    @Controller: 标识表现层组件

    对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称

3. <context:include-filter> 和 <context:exclude-filter> 子节点支持多种类型的过滤表达式

4. 组件装配:

   <context:component-scan> 元素还会自动注册 AutowiredAnnotationBeanPostProcessor 实例, 该实例可以自动装配具有 @Autowired 和 @Resource 、@Inject注解的属性.

5. 使用 @Autowired 自动装配 Bean:

    @Autowired 注解自动装配具有兼容类型的单个 Bean属性

    构造器, 普通字段(即使是非 public), 一切具有参数的方法都可以应用@Authwired 注解

    默认情况下, 所有使用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时, 会抛出异常, 若某一属性允许不被设置, 可以设置 @Authwired 注解的 required 属性为 false

    默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 此时可以在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 @Qualifiter 已指定注入 Bean 的名称

    @Authwired 注解也可以应用在数组类型的属性上, 此时 Spring 将会把所有匹配的 Bean 进行自动装配.

    @Authwired 注解也可以应用在集合属性上, 此时 Spring 读取该集合的类型信息, 然后自动装配所有与之兼容的 Bean.

    @Authwired 注解用在 java.util.Map 上时, 若该 Map 的键值为 String, 那么 Spring 将自动装配与之 Map 值类型兼容的 Bean, 此时 Bean 的名称作为键值

6. 使用 @Resource 或 @Inject 自动装配 Bean

    Spring 还支持 @Resource 和 @Inject 注解,这两个注解和 @Autowired 注解的功用类似

    @Resource 注解要求提供一个 Bean 名称的属性,若该属性为空,则自动采用标注处的变量或方法名作为 Bean 的名称

    @Inject 和 @Autowired 注解一样也是按类型匹配注入的 Bean, 但没有 reqired 属性

     建议使用 @Autowired 注解

7. 整合多个配置文件:

    Spring 允许通过 <import> 将多个配置文件引入到一个文件中,进行配置文件的集成。这样在启动 Spring 容器时,仅需要指定这个合并好的配置文件就可以。

     import 元素的 resource 属性支持 Spring 的标准的路径资源

8. Bean 的作用域:默认情况下, Spring 只为每个在 IOC 容器里声明的 Bean 创建唯一一个实例, 整个 IOC 容器范围内都能共享该实例。prototype 每次创建一个新的实例。

9. 配置文件的位置:    

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
        <listener-class>
               org.springframework.web.context.ContextLoaderListener
        </listener-class>
</listener>

 

     spring的配置文件applicationContext.xml的默认地址在WEB-INF下,只要在web.xml中加入代码 : org.springframework.web.context.ContextLoaderListener spring就会被自动加载

     根据Spring框架的API描述,有以下四种方法配置applicationContext.xml文件路径

     1. /WEB-INF/applicationContext.xml

     2. com/config/applicationContext.xml

     3. file:C:/javacode/springdemo/com/config/applicationContext.xml

     4. classpath:com/config/applicationContext.xml

     注:以上路径只是举例,具体使用还是要针对真是项目的,做编程的这点举一反三能力还是有的吧

     开发过程中,如果spring的配置文件applicationContext.xml未加载的话,一般回报这样的错误 Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

 

Spring 复习笔记

标签:

原文地址:http://www.cnblogs.com/Jtianlin/p/5044003.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!