Javaweb Spring几个基本注释

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

一、@Autowired注解:

如要仅仅使用此注解,需要在spring容器中声明该注解的解析Bean:

<bean class="org.springframework.beans.factory.annotation.                                                                AutowiredAnnotationBeanPostProcessor"/>

该bean会自动扫描spring中所有autowired注解,默认是类型匹配。

当所自动注入的bean超过1个,或者没有时,都会报BeanCreationException错

该注解可以用在变量上面,方法,构造方法上面,对方法传入的参数进行注入

二、@Qualifier注解:

该注解制定autowired注入bean的名称,所以它是对变量注释的:

@Autowired

public Boss(Car car , @Qualifier("office")Office office){

//方法体

};

@Autowired

@Qualifier("office")

private Office office;

三、@Resource

作用和@Autowired 一样,但是它默认是根据类型来注入,也可更改为type,在lib/j2ee/common-annotations.jar包中,在xml文件中声明:

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>

四、@preConstruct  @preDistory

这两个注释是在bean实例化和销毁前执行的方法注释,也就是说,注释在方法上面。这两个注释的功能,也可以通过<bean>元素的 init-method/destory-method来配置

五、<context : annotation-config/>简化配置

在xml文件中配置这句话,就不需要一一引入每种注释的处理类了

spring 2.x 中对context引入了一个新的Schema 命名空间, 该命名空间对注释驱动,属性文件引入,加载期织入等功能提供了便捷的配置,也就是免去了配置每个注释的处理类,默认会注册:AutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessorPersistenceAnnotationBeanPostProcessor 以及equiredAnnotationBeanPostProcessor 这 4 个 BeanPostProcessor。

在配置文件中使用 context 命名空间之前,必须在 <beans> 元素中声明 context 命名空间。

————————————————————可以把类定义成bean的注解-------------------------------------------------------------

六、@Component

在spring2.5中提供该注释,可以直接定义bean,它是个泛泛的概念,可以定义在任何层次(dao、service、controller...)上

七、@Repository

只能定义在Dao层,因为该注解不仅仅是将类识别为bean,而且还能将类所抛出的数据访问异常封装成为spring的数据访问异常,使得异常独立于底层框架

八、@Service

标注在业务层上

九、@Controller

标注在控制层,@Controller(“name”)  @Controller(value=“name”)意思是告诉spring注册bean的时候,把bean名字设为name

十、@Scope(“singleton”||”prototype")

该注释是告诉该类在创建bean的时候,是以单例模式,还是每次都重新创建,默认单例。

可以避免struts里面线程安全问题

使用这几个注解,spring会自动创建相应的bean并注册到applicationContext中,默认都是sigleton模式

<context : component-scan base-package=“”> 扫描子包中上面四个注释,然后注册成bean,该语句会默认引入AutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessor,所以可以不用

<context : annotation-config/>

------------------------------------------------------------------------------------------------------------------------------------------------------------

xml方式和注释方式使用挑选各自优缺:

1、注释是在Java源码上面,如果需要在某个地方加入bean,那就需要调整Java源码,然后重新编译,而XML直接修改就可以了

2、如果bean不是自己写的类,而是Java里面的,那么注释就没法用了。

3、注释配置往往是类级别的,而 XML 配置则可以表现得更加灵活。比如相比于 @Transaction 事务注释,使用 aop/tx 命名空间的事务配置更加灵活和简单。

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

【java框架源码下载

时间: 2024-10-10 20:29:16

Javaweb Spring几个基本注释的相关文章

spring mvc @ResponseStatus 注解 注释返回中文乱码的问题

前言 前文中讲到,使用@ResponseStatus注解,可以修饰一个异常类,在发生异常的时候返回指定的错误码和消息,在返回的 reason中包含中文的时候,就会出现中文乱码的问题 现象 reason中包含中文的时候,前端返回为乱码 /** * 自定义异常类 * * @author Administrator * */ @ResponseStatus(value = HttpStatus.FORBIDDEN, reason = "没有权限") public class TestExce

javaweb+spring 项目集成异常的处理

在web项目开发中,一个系统应该要考虑到异常情况的处理,并且应该当异常发生时应该需要记录相应的异常日志,对于用户而言则不能直接抛出异常,需要考虑到用户的体验: 以下就介绍基于spring框架的基础上的异常处理: 1:如何将异常优雅地显示给用户? 如果将一连串的java报错展示给用户,对用户而言是没有意义的,并且也是危险的: 1)定义错误代码:这里以一个枚举类来封装用户错误代码:ErrorCode: public enum ErrorCode { NULL_OBJ("LUO001",&q

使用 Spring 2.5 注释驱动的 IoC 功能

使用 Spring 2.5 注释驱动的 IoC 功能 原文链接 :http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/ 文中对Spring 2.5新引入的注解配置做了详细的讲解以及实例,包括 @Autowired  @Qualifier @Resource @PostConstruct 和 @PreDestroy <context:annotation-config/> <context:component-scan/&

使用 Spring 2.5 注释驱动的 IoC 功能(转)

基于注释(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置 Bean.装配 Bean 的功能,您可以使用基于注释的 Spring IoC 替换原来基于 XML 的配置.本文通过实例详细讲述了 Spring 2.5 基于注释 IoC 功能的使用. 陈 雄华 ([email protected]), 技术总监, 宝宝淘网络科技有限公司 2008 年 2 月 28 日 内容 概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 J

Spring定时器技术终结者——采用Scheduled注释的方式实现Spring定时器

在Spring中有两种方式可以实现定时器的功能,分别是Scheduled注释方式和XML配置方式,本博客将介绍如何在Spring中使用Scheduled注释方式的方式实现定时器的功能,代码及相应的解释如下: 代码1-Spring配置文件(applicationContext.xml文件): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframe

使用轻量级Spring @Scheduled注解执行定时任务

WEB项目中需要加入一个定时执行任务,可以使用Quartz来实现,由于项目就一个定时任务,所以想简单点,不用去配置那些Quartz的配置文件,所以就采用了Spring @Scheduled注解来实现了定时任务.在这里做个备注. spring配置文件  xmlns中加入一段: xmlns:task="http://www.springframework.org/schema/task" 然后xsi:schemaLocation多加下面的内容: http://www.springframe

使用 Spring 进行单元测试

单元测试和集成测试在我们的软件开发整个流程中占有举足轻重的地位,一方面,程序员通过编写单元测试来验证自己程序的有效性,另外一方面,管理者通过持续自动的执行单元测试和分析单元测试的覆盖率等来确保软件本身的质量.这里,我们先不谈单元测试本身的重要性,对于目前大多数的基于 Java 的企业应用软件来说,Spring 已经成为了标准配置,一方面它实现了程序之间的低耦合度,另外也通过一些配置减少了企业软件集成的工作量,例如和 Hibernate.Struts 等的集成.那么,有个问题,在普遍使用 Spri

浅谈Spring(五)简单日志实例

以一个简单的记录日志的实例来继续AOP的实现,近一步加深对AOP的了解. 先新建个web工程,将spring的包加进去,为方便就把全部的jar包加进去. 先来看个接口,很简单就两个方法 public interface Print { public String print(String name); public String sleep(String name); } 接下来是实现类 public class SystemPrint implements Print{ public Stri

Spring注解@Component、@Repository、@Service、@Controller区别

Spring注解@Component.@Repository.@Service.@Controller区别 Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层.业务层和控制层(Web 层)相对应.虽然目前这 3 个注释和 @Comp