`

Spring ~IOC Annotations

阅读更多
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 />1.2 @Component/@Service 和 @Repository
    Spring扫描指定的classpath时,会含以上Annotation的类将加其加入ApplicaitonContext中。

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

1.3 @Autoired/@Qualifier 与 @Resource
Spring2.5的新特性 part1(InfoQ) 
使用 Spring 2.5 注释驱动的 IoC 功能(IBM DW) 
@Autoried 与 @Resource都比较灵活,不只能声明于setter函数,还能声明于不按setter规则命名的函数上,以及私有属性上(可省略无业务意义的仅spring需要的setter函数,在单元测试Mock对象时可用反射注入)

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

@Resource 默认byName,如果name找不到就会byType, 另可以用name与type属性设定。但在spring 2.5.5上的试验,不是很成功。

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

1.5 生命周期Annotation
JSR250的@PostConstruct 和 @PreDestroy,比以往的实现接口或者在applicationContext.xml中配置init-method的方式更为方便和标准。 
2.属性文件
     在配置文件中,很有一些属性会在团队的开发环境,个人的开发环境,集成测试环境,生产环境,甚至生产环境集群的每台服务器中都有所不同的。       为了将这些易变的属性抽从applicationContext取出来,Spring 做了一些特殊的支持,

     详见Configuring applications with 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事务资料 六种事务模型与四种事务隔离级别介绍。

 

分享到:
评论

相关推荐

    Spring通过注解实现IOC

    Spring框架是Java开发中广泛应用的一个轻量级框架,它的核心特性之一就是依赖注入(Dependency Injection,简称DI),而实现DI的一种重要方式就是通过注解(Annotations)。本文将深入探讨Spring如何利用注解来实现...

    cglib-2.2.jar,ehcache-spring-annotations-1.1.2.jar

    在Java开发领域,Spring框架是应用最广泛的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器。为了提升应用性能和减少数据库负载,Spring提供了多种缓存支持,其中包括集成第三方缓存库如...

    jquery+json+structs+spring+hibernate-annotations+maven

    4. **Spring Framework**: Spring是一个全面的Java企业级应用开发框架,它支持IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)。Spring还提供了大量的模块,如数据访问、...

    简单IOC容器demo

    【标签】:“spring ioc”指的是Spring框架中的Inversion of Control(控制反转)特性。Spring是一个广泛使用的Java企业级应用开发框架,它的IOC容器负责管理对象的生命周期和对象之间的依赖关系。通过IOC,对象的...

    Spring MVC

    它以强大的Spring IoC容器为基础,并充分利用容器的特性来简化它的配置。 commons-logging-1.2.jar jackson-annotations-2.6.6.jar jackson-core-2.6.6.jar jackson-databind-2.6.6.jar jakarta-taglibs-standard-...

    Struts2.1.6+Hibernate3.3.2+Spring2.5.5+Extjs3.0.0+Annotations

    Spring框架是一个轻量级的控制反转(IoC)和面向切面编程(AOP)容器,它提供了模块化结构,易于扩展和维护。Spring2.5.5版本加强了对注解的支持,简化了Bean配置,同时提供了事务管理、数据访问、MVC框架等功能。 ...

    spring2.5.2开发参考手册pdf,spring2.5.ppt,Spring2.5-中文参考手册.chm

    它可能会重点介绍新特性,如XML配置的简化(如@Annotations)、Bean定义的增强(如Prototype scope和Lazy initialization)、表达式语言(Spring Expression Language, SpEL)以及对JSR-303 Bean Validation的支持。...

    spring2.5源码包

    Spring 2.5 引入了对 JSR-250(Common Annotations for the Java Platform)的支持,使得在类和方法上使用注解来声明切面变得更为方便。`org.springframework.aop` 包中的类和接口展示了 AOP 的实现,包括切面...

    Spring-Reference_zh_CN.rar_spring_spring 2.5_spring framework_sp

    Spring的IoC(Inversion of Control,控制反转)容器是其核心组件之一,它负责管理对象的生命周期和依赖关系。在2.5版本中,你可以通过注解直接在类或方法级别声明bean及其依赖。此外,`@Component`、`@Service`、`@...

    spring框架所需要jar文件

    首先,Spring框架本身包含在`spring.jar`中,这是Spring框架的基础库,提供了如IoC容器、数据访问/集成、Web、AOP、工具类、测试等核心功能。IoC容器是Spring的核心,它管理着应用对象的生命周期和配置,使得开发者...

    Spring 依赖注入

    - **Spring的IOC容器**:Spring的IoC容器是负责管理和控制对象生命周期的核心组件。它通过解析配置文件(通常是XML文件或注解)来创建和管理对象及其依赖关系。 - **使用注解支持依赖注入**:Spring支持多种注解来...

    spring中所需要的知识点及学习方向文档

    总的来说,学习Spring应从其核心概念、配置文件解析、IoC和AOP机制、MVC框架等方面入手,同时关注Spring与其他技术如JDBC、MyBatis、Hibernate的集成,以及Spring Boot和Spring Cloud等高级话题,以便全面掌握Spring...

    Spring5.0中文开发手册

    IoC(Inversion of Control)容器是Spring框架的核心特性之一,它负责管理应用程序的对象或bean的生命周期和配置。通过Spring IoC容器,可以将对象的创建、配置和组装的责任从应用程序代码中分离出来。 - **3.2 ...

    spring课程

    Spring的核心特性之一是IOC(Inversion of Control,控制反转),它负责管理对象的生命周期,包括创建、初始化和销毁。要实现这一功能,首先需要启动Spring容器,可以使用如下两种方式: 1. 使用...

    spring2.0.7

    在Spring 2.0.7中,通过XML配置文件或注解(Annotations)来定义bean及其依赖。IoC使得应用程序的组件之间解耦,提高了代码的可测试性。 2. **AOP**:Spring的AOP模块允许开发者定义横切关注点,如日志、事务管理等...

    Spring MVC所需jar包

    1. **Spring 框架核心库**:这是 Spring MVC 的基础,它包含了 IoC(Inversion of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)的核心概念。主要的 jar 包有 `spring-core.jar`、`...

    spring 2.0.jar

    在Spring 2.0中,Spring的IoC(Inversion of Control,控制反转)容器得到了进一步的加强,支持基于注解的配置,开发者可以在类和方法上使用注解来声明依赖,比如@Autowired和@Component。这使得配置文件变得更简洁...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 ...

Global site tag (gtag.js) - Google Analytics