IOC Annotations

2024-06-07 07:48
文章标签 ioc annotations

本文主要是介绍IOC Annotations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring2.5的新特性:

http://www.infoq.com/cn/articles/spring-2.5-part-1

http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/

 

1.1: 实现零配置的适用场合

 

IOC  Annotations 可以实现零配置,但也因为不用在applicationContext.xml中定义了,也就缺乏了灵活的,不修改代码的IOC手段,也无法做一些属性值的配置。所以,IOC annotation 常用于Service,Dao,Controller 这些依赖关系比较固定,约定俗成大于配置的地方。 而XML 配置文件则用于如Database/SessionFactory,Spring  Security这些需要配置的地方。

 

1.2:applicationContext.xml的定义

 

定义自动扫描Classpath路径,扫描带有@Component/@Service/@Repository的pojo加入applicationContext,

 并根据@Autoired/@Qualifier  与 @Resource进行IOC配置,并对@PostConstruct 和 @PreDestroy和@Requried进行处理

 

<context:component-scan base-package="org.springside.examples.miniweb" />

 

以下配置除不会扫描@Component/@Service/@Repository外,其他作用同上

 

<context:annotation-config />

 

@Component/@Service 和 @Repository

 

Spring扫描指定的classpath时,会含以上Annotation的类将加其加入ApplicaitonContext中。

 

    一般@Repository用于DAO层, 而@Service层用于Service层,@Component用于其他,三者在Spring当前版本并没有本质区别,建议只使用@Component。

 

Spring扫描指定的classpath时,会含以上Annotation的类将加其加入ApplicaitonContext中。

 

    一般@Repository用于DAO层, 而@Service层用于Service层,@Component用于其他,三者在Spring当前版本并没有本质区别,建议只使用@Component。

 

1.3: @Autoired/@Qualifier  与 @Resource

 

    @Autoried 与 @Resource都比较灵活,不只能声明于setter函数,还能声明于不按setter规则命名的函数上,以及 私有属性上(不建议使用,因为在单元测试时需要以反射注入)

  @Autoried 默认byType,如果需要byName,在变量上增加@Qualifier,另外@Autoried默认隐含了@Required,保证变量一定被注入,如果不需要,用@Autowired(required=false)取消。

  @Resource 默认byName,如果name找不到就会byType, 另可以用name与type属性设定。

 

1.4: @Required

  

      对于非@autowired标注的属性,声明@Required表明明属性必须被注入。

 

1.5: 生命周期Annotation

 

      JSR250的@PostConstruct 和 @PreDestroy,比以往的实现接口或者在applicationContext.xml中配置init-method的方式更为方便和标准。 {{@PostContruct在所有注入函数执行完毕后执行,而@PreDestroy则在JVM退出的ShutdonwHook中拦截,注意,ShutdownHook对kill -9这种暴烈的关闭无效。
}}

 

2.属性文件

 

在配置文件中,很有一些属性会在团队的开发环境,个人的开发环境,集成测试环境,生产环境,甚至生产环境集群的每台服务器中都有所不同的。为了将这些易变的属性抽从applicationContext取出来,Spring 做了一些特殊的支持,

在SpringSide里配置如下:

 

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /><property name="ignoreResourceNotFound" value="true" /><property name="locations"><list><value>classpath:application.properties</value><value>classpath:application.local.properties</value><value>file:/var/myapp/application.server.properties</value></list></property></bean>

 

团队公用的开发环境配置在application.properties中,放入版本控制系统管理中。

  个人的开发环境,集成测试环境中与公共环境不相同的部分,放入application.local.properties中,会覆盖application.properties中的设置,由个人管理,不放入版本管理系统。

  在打包部署到生产环境时,可将生产环境每台服务器的特殊属性可放在服务器的某个固定目录,如/var/myapplicaiton/application.server.properties中(而不放在项目jar内),   每台服务器的配置文件分开不同服务器目录放在版本管理系统中。也可以在启动命令中加入参数来覆盖,如-Djdbc.username=aaa。

 

3: 事务

 

    因为不喜欢在配置文件里用AspectJ定义事务,宁愿使用Spring的@Transactional annotation在service层上进行标注。

    对于只读的方法,可以加入@Transactional (readOnly=true) 标注以提高性能。

    因为Spring默认只对RuntimeException进行rollback,所以:

    1.所有在service层方法中用throws定义的checkedException,都必须在@Transactional中定义rollbackclass。

    2.所有在service层方法中catch处理了的Exception,又希望Spring辅助rollback的话,必须重抛一个RunTimeException,SpringSide里预定义了一个统一的ServiceException。

   可特别配置事务类型,见

 

JavaEE事务资料 六种事务模型与四种事务隔离级别介绍。

 

转自: http://wiki.springside.org.cn/display/calvin/Spring+Notes

这篇关于IOC Annotations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038573

相关文章

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

Spring6详细学习笔记(IOC+AOP)

一、Spring系统架构介绍 1.1、定义 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。Spring官网 Spring是一款主流的Java EE 轻量级开源框架,目的是用于简化Java企业级引用的开发难度和开发周期。从简单性、可测试性和松耦合度的角度而言,任何Java应用都可以从Spring中受益。Spring框架提供自己提供功能外,还提供整合其他技术和框架

spring ioc容器的原理

1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些齿轮相互啮合在一起,协

SpringIOC源码分析(六)__IOC容器的初始化__BeanDefinition载入注册

一、前情提要 上一篇提到了IOC容器初始化的流程,及资源定位,本篇主要分析BeanDefinition的载入过程 二、BeanDefiniton载入解析 BeanDefinition是IOC容器对Bean的数据承载模型,IOC容器对Bean的管理和依赖注入的实现,是通过对BeanDefinition的各种操作来实现的,IOC容器通过一个HashMap来保持和维护这些BeanDefinit

SpringIOC源码分析(五)__IOC容器的初始化__资源加载

一、IOC容器初始化过程 IOC容器初始化是由如上篇所讲到的refresh(),方法来启动的,启动包括BeanDefinition的Resource定位,载入和注册这个主要过程。 过程一:resource定位,是由resourceLoader通过getResource(String location) 的接口来完成的。过程二:将用户定义的Bean表示为IOC容器的内部数据结构BeanDef

Spring-容器:IOC-基于XML管理Bean

目录 一、概述1.1、定义1.2、简介1.3、作用1.4依赖注入1.4.1定义1.4.2作用1.4.3实现方式1.5实现 二、基于XML管理Bean(了解)2.1、获取Bean的方式2.2、依赖注入2.2.1、根据setter注入2.2.2、根据构造器注入 2.3、特殊值处理2.3.1、字面量赋值2.3.2、null值2.3.3、xml实体2.3.4、CDATA节 2.4、为对象类型属性赋

【Spring基础1】- Spring 启示录-理解IoC控制反转

目录 1-1 通过代码引出Spring分析上述程序问题 1-2 OCP 开闭原则1-3 依赖倒置原则(DIP原则)1-4 控制反转IoC1-5 Spring框架 1-1 通过代码引出Spring 假设有 MVC 三层模式下,有 Dao、Service、Web层 Dao 实现了 UserDao、UserDaoImplForMySQLServic 实现了 UserServic

Spring(三):IoC容器装配Bean(xml配置方式和注解方式)

XML配置方式 一、三种实例化Bean的方式 1.使用类构造器实例化(默认无参数) <bean id=“personService" class="cn.itcast.bean.impl.PersonServiceImpl"/> 2.使用静态工厂方法实例化 <bean id="personService"          class="com.itcast.factory.PersonSe