文档库 最新最全的文档下载
当前位置:文档库 › Spring的注解详解

Spring的注解详解

Spring的注解详解
Spring的注解详解

Spring的注解

一、 spring注解

1、@Autowired注入注解

@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装工作。

@Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性。@Autowired是根据类型进行自动装配的。例如,如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常。

如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。

1.public class TestController {

2.

3.@Autowired

4.@Qualifier(“u serDao”)

5.Private UserService userService;

6.

7.@RequestMapping("/showView")

8.public ModelAndView showView(){

9.ModelAndView modelAndView = new ModelAndView();

10.modelAndView.setViewName("viewName");

11.modelAndView.addObject("属性名称","属性值");

12.return modelAndView;

13.}

14.}

2、@Resource注入注解

JSR-250标准注解,推荐使用它来代替Spring专有的@Autowired注解。

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource 默认按byName自动注入罢了。

@Resource有两个属性是比较重要的,分别是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属

性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

3、@Component注解(不推荐使用)

只需要在对应的类上加上一个@Component注解,就将该类定义为一个Bean了。Spring还提供了更加细化的注解形式:@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。

在Spring版本(2.5)中,这些注解与@Component的语义是一样的,完全通用,在Spring 以后的版本中可能会给它们追加更多的语义。所以,我们推荐使用@Repository、@Service、@Controller来替代@Component。

4、@Controller控制层注解

通过@controller标注即可将class定义为一个controller类, Spring的Controller是Singleton的。这就意味着会被多个请求线程共享。因此,我们将控制器设计成无状态类。

1.@Controller

2.@RequestMapping("/test")

3.public class TestController {

4.

5.@RequestMapping("/showView")

6. public ModelAndView showView(){

7.ModelAndView modelAndView = new ModelAndView();

8.modelAndView.setViewName("viewName");

9.modelAndView.addObject("属性名称","属性值");

10.return modelAndView;

11. }

12.}

5、@Service业务层注解

通过@service标注即可将class定义为一个service类,

比如在一个Student实现类上加上@Service("student"),括号里面就是给实例化后的Student对象取的名字。

这是在你一个接口有多个实现类的情况下区分实现类的方式。

比如Student实现了Person接口,在你的controller里面@Autowired Person时,假如这时Person还有另一个实现类User,为了确定实例化Student还是User,@Service括号里面的名称就有用了。

1.@Autowired

2.@Qualifier("student")

3.private Person person;

这样就确定实例化了一个Person指向一个Student对象。

6、@Repository持久层注解

通过@repository注解标注持久层。注解括号内是当前类实例化后的对象名称,可以省略,默认值为当前类名(首字母小写)。

1.@Repository("periodDao")

2.public class PeriodDaoImpl implements PeriodDao{

3.……

4.}

7、@RequestMapping注解

表示请求需要匹配的路径,协议。

参数说明:

8、@RequestBody注解

在参数之前加入@RequestBody注解。用来将指定的客户端发送过来的请求参数的数据格式转换成java实体

1.@RequestMapping(value="save",method=RequestMethod.POST )

2.@ResponseBody

3.public Map save(@RequestBody User user ) {

4. String name = user.getName();

5.……

6.}

9、@ResponseStatus注解

返回一个指定的http response状态码。

1.@RequestMapping("/responsestatus")

2.@ResponseStatus(value=HttpStatus.BAD_REQUEST)

3.public void responseStatusTest(){

4.……

5.}

10、@ResponseBody注解

如果这个方法定义了@ResponseBody注解。那么会把返回值转换成这个数据格式,输出给客户端

1.@RequestMapping(“save”)

2.@ResponseBody

3.public String userSave(@RequestBody JSONObject reqJson) {

4.……

5. }

11、@Transaction事务注解

要使用Spring3事务管理,要在applicationContext.xml增加事务管理器相关配置信息

class="org.springframework.jdbc.datasource.DataSourceTransactionManager"

p:dataSource-ref="dataSource">

@Transactional注解可以标注在类和方法上

在方法上的@Transactional注解会覆盖掉类上的@Transactional。

@Transactional的属性:

Spring @Transactional propagation各个属性值的含义

12、@Scope注解

我们可能还需要通过bean的scope属性来定义一个Bean的作用范围,我们同样可以通过@Scope注解来完成这项工作:

Spring容器最初提供了两种bean的scope类型:singleton和prototype,但发布2.0之后,又引入了另外三种scope类型,即request,session和global session类型。不过这三种类型有所限制,只能在web应用中使用,也就是说,只有在支持web应用的ApplicationContext 中使用这三个scope才是合理的。

注意:这里的singleton和设计模式里面的单例模式不一样,标记为singleton的bean 是由容器来保证这种类型的bean在同一个容器内只存在一个共享实例,而单例模式则是保证在同一个Classloader中只存在一个这种类型的实例。

(1) scope类型singleton(单例模式)

singleton类型的bean定义,在一个容器中只存在一个实例,所有对该类型bean的依赖都引用这一单一实例,这就好像每个幼儿园都会有一个滑梯一样,这个幼儿园的小朋友共同使用这一个滑梯,而对于幼儿园容器来说,滑梯就是一个singleton的bean。

此外,singleton类型的bean定义,从容器启动,到他第一次被请求而实例化开始,只要容器不销毁或退出,该类型的bean的单一实例就会一直存活。

通常情况下,如果你不指定bean的scope,singleton便是容器默认的scope。

(2) scope类型prototype(多例模式)

scope为prototype的bean,容器在接受到该类型的对象的请求的时候,会每次都重新生成一个新的对象给请求方,虽然这种类型的对象的实例化以及属性设置等工作都是由容器负责的,但是只要准备完毕,并且对象实例返回给请求方之后,容器就不在拥有当前对象的引用,请求方需要自己负责当前对象后继生命周期的管理工作,包括该对象的销毁。也就是说,容器每次返回请求方该对象的一个新的实例之后,就由这个对象“自生自灭”了。

springMVC详解以及注解说明

springMVC详解以及注解说明 基于注释(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置Bean、装配Bean 的功能,您可以使用基于注释的Spring IoC 替换原来基于XML 的配置。本文通过实例详细讲述了Spring 2.5 基于注释IoC 功能的使用。 概述 注释配置相对于XML 配置具有很多的优势: ? 它可以充分利用Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用JPA 注释配置ORM 映射时,我们就不需要指定PO 的属性名、类型等信息,如果关系表字段和PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过Java 反射机制获取。 ? 注释和Java 代码位于一个文件中,而XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java 代码放在一起,有助于增强程序的内聚性。而采用独立的XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。 因此在很多情况下,注释配置比XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分XML 配置的功能。在这篇文章里,我们将向您讲述使用注释进行Bean 定义和依赖注入的内容。 Spring2.5的注释 Spring 2.5 提供了AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 和RequiredAnnotationBeanPostProcessor这四个主要的关于Annotation 的BeanPostProcessor。 我们可以使用 来方便地、一次性的声明者四个BeanPostProcessor。 1.Autowired... 提供对Spring 特有的Autowired 和Qualifier 注释。

spring的@Transactional注解详细用法

spring的@Transactional注解详细用法 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! spring的@Transactional注解详细用法Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API 提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects)支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用提供比其他事务API如JTA更简单的编程式事务管理API与spring数据访问抽象的完美集成事务管理方式spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。显然声明式事务管理要优于编程式事务管理,这正是spring

Spring注解详解

Spring注解详解 目录 一、注解说明 (2) 1.使用简化配置 (2) 2.使用Bean定义注解 (2) 3.Spring支持以下4种类型的过滤方式: (2) 二、注解介绍 (2) 1.@Controller (3) 2.@Service (3) 3.@Autowired (4) 4.@RequestMapping (4) 5.@RequestParam (5) 6.@ModelAttribute (6) 7.@Cacheable和@CacheFlush (7) 8.@Resource (7) 9.@PostConstruct和@PreDestroy (8) 10.@Repository (8) 11.@Component(不推荐使用) (8) 12.@Scope (8) 13.@SessionAttributes (9) 14.@InitBinder (9) 15.@Required (9) 16.@Qualifier (10)

一、注解说明 1.使用简化配置 将隐式地向Spring容器注册以下4个BeanPostProcessor: AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor PersistenceAnnotationBeanPostProcessor RequiredAnnotationBeanPostProcessor 2.使用Bean定义注解 如果要使注解工作,则必须配置component-scan,实际上不需要再配置annotation-config。base-package属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理。还允许定义过滤器将基包下的某些类纳入或排除。 3.Spring支持以下4种类型的过滤方式: 1)注解org.example.SomeAnnotation将所有使用SomeAnnotation注解的类过滤出来 2)类名指定org.example.SomeClass过滤指定的类 3)正则表达式com.kedacom.spring.annotation.web..*通过正则表达式过滤一些类 4)AspectJ表达式org.example..*Service+通过AspectJ表达式过滤一些类 二、注解介绍 注解种类: 1)@Controller 2)@Service 3)@Autowired 4)@RequestMapping 5)@RequestParam 6)@ModelAttribute

Java Spring各种依赖注入注解的区别

Spring对于Bean的依赖注入,支持多种注解方式: 直观上看起来,@Autowired是Spring提供的注解,其他几个都是JDK本身内建的注解,Spring 对这些注解也进行了支持。但是使用起来这三者到底有什么区别呢?笔者经过方法的测试,发现一些有意思的特性。 区别总结如下: 一、@Autowired有个required属性,可以配置为false,这种情况下如果没有找到对应的bean 是不会抛异常的。@Inject和@Resource没有提供对应的配置,所以必须找到否则会抛异常。 二、@Autowired和@Inject基本是一样的,因为两者都是使用AutowiredAnnotationBeanPostProcessor来处理依赖注入。但是@Resource是个例外,它使用的是CommonAnnotationBeanPostProcessor来处理依赖注入。当然,两者都是BeanPostProcessor。

TIPS Qualified name VS Bean name 在Spring设计中,Qualified name并不等同于Bean name,后者必须是唯一的,但是前者类似于tag或者group的作用,对特定的bean进行分类。可以达到getByTag(group)的效果。对于XML配置的bean,可以通过id属性指定bean name(如果没有指定,默认使用类名首字母小写),通过标签指定qualifier name: 如果是通过注解方式,那么可以通过@Qualifier注解指定qualifier name,通过@Named或者@Component(@Service,@Repository等)的value值指定bean name:

SpringMVC常用注解说明

SpringMVC常用注解: 1、@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。 @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了 @RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用 @RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式: (1)在SpringMVC 的配置文件中定义MyController 的bean 对象。 (2)在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。

spring注解详细介绍

使用Spring2.5的Autowired实现注释型的IOC 161641 使用Spring2.5的新特性——Autowired可以实现快速的自动注入,而无需在xml文档里面添加bean的声明,大大减少了xml文档的维护。(偶喜欢这个功能,因为偶对xml不感冒)。以下是一个例子: 先编写接口Man: public interface Man { public String sayHello(); } 然后写Man的实现类Chinese和American: @Service public class Chinese implements Man{ public String sayHello() { return "I am Chinese!"; } } @Service public class American implements Man{ public String sayHello() { return "I am American!"; } } @Service注释表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean,例如Chinese实例化为chinese,American实例化为american,如果需要自己改名字则:@Service("你自己改的bean名")。 beans.xml 在spring的配置文件里面只需要加上,可以使用base-package="*"表示全部的类。 编写主类测试: @Service public class Main {

spring注解注入示例详解

一、各种注解方式 1.@Autowired注解(不推荐使用,建议使用@Resource) @Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。 @Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性。要使@Autowired能够工作,还需要在配置文件中加入以下 Xml代码 1. 2. @Qualifier注解 @Autowired是根据类型进行自动装配的。例如,如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用 @Qualifier配合@Autowired来解决这些问题。如下: 1). 可能存在多个UserDao实例 Java代码 1.@Autowired 2.@Qualifier("userServiceImpl") 3.public IUserService userService; 或者 Java代码 1.@Autowired 2.public void setUserDao(@Qualifier("userDao") UserDao userDao) { https://www.wendangku.net/doc/cf402362.html,erDao = userDao; 4.} 这样,Spring会找到id为userServiceImpl和userDao的bean进行装配。 2). 可能不存在UserDao实例 Java代码 1.@Autowired(required = false) 2.public IUserService userService;

Spring注解的参数

Spring注解的参数 二、Spring2.5引入注解式处理器支持,通过@Controller和@RequestMapping注解定义我们的处理器类。并且提供了一组强大的注解: 需要通过处理器映射DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter来开启支持@Controller和@RequestMapping注解的处理器。 @Controller:用于标识是处理器类; @RequestMapping:请求到处理器功能方法的映射规则; @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;@RequestParam是传参数的

@ModelAttribute:请求参数到命令对象的绑定; @SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session 中; @InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型; 三、Spring3.0引入RESTful架构风格支持(通过@PathVariable注解和一些其他特性支持),且又引入了更多的注解支持: @CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定; @RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定; @RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换); @ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);

SpringMVC注解及实现页面跳转详解

Spring MVC 第一讲:SpringMVC页面跳转实例,通过请求访问start.jsp页面 1.1加包 1.2web.xml springMVC org.springframework.web.servlet.Dispatche rServlet 1 springMVC *.do abc 1.3建springMVC-servlet.xml(注:spring默认要求建立在WEB-INF目录下,并且名称为servlet-name_servlet.xml

Spring常用注解汇总

传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物,这么做有两个缺点: 1、如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么.xml文件又会非常多。总之这将导致配置文件的可读性与可维护性变得很低。 2、在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率。 为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java Bean紧密结合,既大大减少了配置文件的体积,又增加了Java Bean的可读性与内聚性。 不使用注解: 先看一个不使用注解的Spring示例,在这个示例的基础上,改成注解版本的,这样也能看出使用与不使用注解之间的区别,先定义一个老虎: package com.spring.model; public class Tiger { private String tigerName="TigerKing"; public String toString(){ return "TigerName:"+tigerName; } } 再定义一个猴子: package com.spring.model; public class Monkey { private String monkeyName = "MonkeyKing";

public String toString(){ return "MonkeyName:" + monkeyName; } } 定义一个动物园: package com.spring.model; public class Zoo { private Tiger tiger; private Monkey monkey; public Tiger getTiger() { return tiger; } public void setTiger(Tiger tiger) { this.tiger = tiger; } public Monkey getMonkey() { return monkey; } public void setMonkey(Monkey monkey) { this.monkey = monkey; } public String toString(){ return tiger + "\n" + monkey; } } spring的配置文件这么写:

spring注解使用

1.使用Spring注解来注入属性 1.1.使用注解以前我们是怎样注入属性的 类的实现: Java代码 1public class UserManagerImpl implements UserManager{ 2private UserDao userDao; 3public void setUserDao(UserDao userDao){ https://www.wendangku.net/doc/cf402362.html,erDao=userDao; 5} 6... 7} 配置文件: Java代码 8 9 10 11 12 13

1.2.引入@Autowired注解(不推荐使用,建议使用@Resource) 类的实现(对成员变量进行标注) Java代码 14public class UserManagerImpl implements UserManager{ 15@Autowired 16private UserDao userDao; 17... 18} 或者(对方法进行标注) Java代码 19public class UserManagerImpl implements UserManager{ 20private UserDao userDao; 21@Autowired 22public void setUserDao(UserDao userDao){ https://www.wendangku.net/doc/cf402362.html,erDao=userDao; 24} 25... 26} 配置文件 Java代码 27 28

spring注解详解

概述 注释配置相对于XML 配置具有很多的优势: ?它可以充分利用Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用JPA 注释配置ORM 映射时,我们就不需要指定PO 的属性 名、类型等信息,如果关系表字段和PO 属性名、类型都一致,您甚至无需编 写任务属性映射信息——因为这些信息都可以通过Java 反射机制获取。 ?注释和Java 代码位于一个文件中,而XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java 代码放在一起, 有助于增强程序的内聚性。而采用独立的XML 配置文件,程序员在编写一个功 能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低 开发效率。 package com.baobaotao; public class Office { private String officeNo =”001”; //省略 get/setter @Override public String toString() { return "officeNo:" + officeNo; } } Car 拥有两个属性:

清单2. Car.java package com.baobaotao; public class Car { private String brand; private double price; // 省略 get/setter @Override public String toString() { return "brand:" + brand + "," + "price:" + price; } } Boss 拥有Office 和Car 类型的两个属性: 清单3. Boss.java package com.baobaotao; public class Boss { private Car car; private Office office; // 省略 get/setter @Override public String toString() { return "car:" + car + "\n" + "office:" + office; } } 我们在Spring 容器中将Office 和Car 声明为Bean,并注入到Boss Bean 中:下面是使用传统XML 完成这个工作的配置文件beans.xml: 清单4. beans.xml 将以上三个类配置成Bean

SpringMVC中常用的注解

SpringMVC 中常用的注解 spring 从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping , @RequestParam , @ModelAttribute 等等这样类似的注解。到目前为止,Spring 的版本虽然发生了很大的变化,但注解的特性却是一直延续下来,并不断扩展,让广大的开发人员的双手变的更轻松起来,这都离不开Annotation 的强大作用,今天我们就一起来看看Spring MVC 4中常用的那些注解吧。 1. @Controller Controller 控制器是通过服务接口定义的提供访问应用程序的一种行为,它解释用户的输入,将其转换成一个模型然后将试图呈献给用户。Spring MVC 使用 @Controller 定义控制器,它还允许自动检测定义在类路径下的组件并自动注册。如想自动检测生效,需在XML 头文件下引入 spring-context: 1 2 3 4 5 6 7 8 9 10 11 1 2

spring注解使用规范

4.Spring相关编码规范 4.1 Spring 注解使用规范 (1)注入依赖对象: 使用@Resource ,不使用@Autowired (2)将组件纳入Spring容器管理: 使用@Service、@Controller、@Repository,不使用@Component @Controller注解的使用规范:只能应用于action @Scope("prototype") @Controller @SuppressWarnings("serial") public class ExamUserSaveAction extends ActionSupport { @Resource private ExamUserService examUserService; } @Service注解的使用规范:只能应用于service 有接口时规范如下: @Service("examUserService") public class ExamUserServiceImpl implements ExamUserService { … } 无接口时规范如下: @Service public class ExamUserService { … } @Repository注解:由于目前各工程DAO依赖于spring对ibatis的支持,暂时不使用此注解。 (3) service/dao 无接口时,服务层代码放置到cn.xxt.功能名.service/dao包下。 备注:要尽量避免在老功能优化中直接写实现,去掉接口。因为这样的话,老功能中service/dao包下,将会含有接口和类。在做新功能时,可以考虑不使用接口。 4.2 配置文件编写规范 (1)打开自动扫描classpath下特定注解文件的的开关与注入依赖对象的开关 frameworkconfig/spring/root.xml文件中打开{自动扫描组件配置}:

spring框架的注解

@Repository、@Service、@Controller 和@Component @Repository、@Service、@Controller 和@Component 将类标识为Bean Spring 自2.0 版本开始,陆续引入了一些注解用于简化Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层(DAO 层) 的类标识为Spring Bean。具体只需将该注解标注在DAO类上即可。同时,为了让Spring 能够扫描类路径中的类并识别出@Repository 注解,需要在XML 配置文件中启用Bean 的自动扫描功能,这可以通过实现。如下所示: // 首先使用 @Repository 将 DAO 类声明为 Bean package bookstore.dao; @Repository public class UserDaoImpl implements UserDao{ …… } // 其次,在 XML 配置文件中启动 Spring 的自动扫描功能 …… …… 如此,我们就不再需要在XML 中显式使用 进行Bean 的配置。Spring 在容器初始化时将自动扫描base-package 指定的包及其子包下的所有class文件,所有标注了@Repository 的类都将被注册为Spring Bean。 为什么@Repository 只能标注在DAO 类上呢?这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为Spring 的数据访问异常类型。Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。 Spring 2.5 在@Repository的基础上增加了功能类似的额外三个注解:@Component、@Service、@Constroller,它们分别用于软件系统的不同层次: ?@Component 是一个泛化的概念,仅仅表示一个组件(Bean) ,可以作用在任何层次。 ?@Service 通常作用在业务层,但是目前该功能与@Component 相同。

spring注解的学习

Spring注解学习手札(一)构建简单Web应用 文章分类:Java编程 近来工作发生了一些变化,有必要学习一下Spring注解了! 网上找了一些个例子,总的说来比较土,大多数是转载摘抄,按照提示弄下来根本都运行不了,索性自己趟一遍这浑水,在这里留下些个印记。 这次,先来构建一个极为简单的web应用,从controller到dao。不考虑具体实现,只是先对整体架构有一个清晰的了解。日后在分层细述每一层的细节。 相关参考: Spring注解学习手札(一)构建简单Web应用 Spring注解学习手札(二)控制层梳理 Spring注解学习手札(三)表单页面处理 Spring注解学习手札(四)持久层浅析 Spring注解学习手札(五)业务层事务处理 Spring注解学习手札(六)测试 我们将用到如下jar包: 引用 aopalliance-1.0.jar commons-logging-1.1.1.jar log4j-1.2.15.jar spring-beans-2.5.6.jar spring-context-2.5.6.jar spring-context-support-2.5.6.jar spring-core-2.5.6.jar spring-tx-2.5.6.jar spring-web-2.5.6.jar spring-webmvc-2.5.6.jar 先看web.xml Xml代码

java注解详解

JA V A 注解的几大作用及使用方法详解 注解(Annotation) 1、Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型。该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰的class 文件和一个注解处理工具组成。 Annotation并不直接影响代码的语义,但是他可以被看做是程序的工具或者类库。它会反过来对正在运行的程序语义有所影响。 Annotation可以从源文件、class文件或者在运行时通过反射机制多种方式被读取。 常见的作用 有以下几种: 1,生成文档。这是最常见的,也是java 最早提供的注解。 常用的有@see @param @return 等 2,跟踪代码依赖性,实现替代配置文件功能。 比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量。 3,在编译时进行格式检查。 如@override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。 *@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。 *方法的名称就是参数的名称,返回值类型就是参数的类型。 *可以通过default来声明参数的默认值。 父类,接口 https://www.wendangku.net/doc/cf402362.html,ng.annotation 包https://www.wendangku.net/doc/cf402362.html,ng.annotation 中包含所有已定义或自定义注解所需用到的原注解和接口。如接口https://www.wendangku.net/doc/cf402362.html,ng.annotation.Annotation 是所有注解继承的接口,并且是自动继承,不需要定义时指定,类似于所有类都自动继承Object。 该包同时定义了四个元注解;

Spring自动装配与扫描注解代码详解

Spring自动装配与扫描注解代码详解 1 javabean的自动装配 自动注入,减少xml文件的配置信息。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

2 spring的扫描注解 使用spring的扫描注解,重构三层结构。配置更少的内容 在applicationContext.xml文件中,导入扫描的xsd l 开启注解扫描 ? 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5