注解Annotation,是一种类似注释的机制,在代码中添加注解可以在之后某时间使用这些信息。跟注释不同的是,注释是给我们看到,java虚拟机不会编译,注解也是不编译的,但是我们可以通过反射机制来读取注解中的信息。注解使用关键字@interface,继承java.lang.annotition。

  spring框架为我们提供了注解功能。

  使用注解编程,主要是为了替代xml文件,是开发更加迅速,提高开发效率。

  在没有使用注解时,spring框架的配置文件applicationContext.xml文件中需要配置很多的<bean>标签,用来声明类对象。使用注解,则不必在配置文件中添加标签,对应的是在对应类的“注释”位置添加说明。具体介绍如下:

spring框架使用的是分层的注解。

  持久层:@Repository;

  服务层:@Service

  控制层:@Controller

1、使用注解,需要在配置文件中增加命名控件和约束文件

<beans ...
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
....
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd
06.">

2、告诉框架那些类是使用注解的。

  <context:component-scan base-package="com.lsz.spring" />

3、持久层注解

Package com.lsz.spring;  

@Repository
public class UserDao{
//。。。。
}

@Repository 等同于配置文件中的

<bean id="userDao" class="com.lsz.spring.UserDao" />

4、服务层注解

@Service(value="testService")
public classTestService { @Resource//相当于自动装配
private UserDao userDao ; public UserDao getUserDao() {
returnuserDao;
}
public void setUserDao(UserDao userDao) {
this.userDao= userDao;
}
}

@Resource对象间关系的组合,。默认采用的是byname方式进行装配,如果根据名称查找不到关联的对象,那么会在采用byType继续查找。

@Service注解等同于

<bean id="testService" class="com.lsz.spring.UserService" />

5、控制层注解

@Controller(value="ua")
@Scope(value="prototype")
public class UserAction { @Resource
private UserService userService ;
public UserService getUserService() {
returnuserService;
}
}

@Controller注解等同于

<bean id="ua" class="com.lsz.spring.UserAction " />

这三个层中的注解关键字都可以使用@Component来代替。

使用注解声明对象,默认情况下生成的id名称为类名称的首字母小写、

6、从Spring环境中获取Action对象。

ServletContext application =request.getSession().getServletContext();
ApplicationContextac = WebApplicationContextUtils.getWebApplicationContext(application);
UserAction useraction = (UserAction)ac.getBean("ua");//获取控制层对象
response.setContentType("text/html;charset=GBK");//设置编码
PrintWriter out =response.getWriter();
//分别将三个层的对象打印出来。
out.println("Action:"+userAction);
out.println("Service:"+userAction.getUserService());
out.println("Dao:"+userAction.getUserService().getUserDao());

Spring(5)—— 注解的更多相关文章

  1. Spring MVC注解的一些案列

    1.  spring MVC-annotation(注解)的配置文件ApplicationContext.xml <?xml version="1.0" encoding=& ...

  2. Spring系列之Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...

  3. spring @condition 注解

    spring @condition注解是用来在不同条件下注入不同实现的 demo如下: package com.foreveross.service.weixin.test.condition; im ...

  4. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  5. Spring的注解方式实现AOP

    Spring对AOP的实现提供了很好的支持.下面我们就使用Spring的注解来完成AOP做一个例子. 首先,为了使用Spring的AOP注解功能,必须导入如下几个包.aspectjrt.jar,asp ...

  6. Spring 之注解事务 @Transactional

    众所周知的ACID属性:  原子性(atomicity).一致性(consistency).隔离性(isolation)以及持久性(durability).我们无法控制一致性.原子性以及持久性,但可以 ...

  7. 数据库事务中的隔离级别和锁+spring Transactional注解

    数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题.ACID首先总结一下数据库事务正确执行的四个要素(ACID): 原子性(At ...

  8. Spring JSR-250注解

    Java EE5中引入了“Java平台的公共注解(Common Annotations for the Java Platform)”,而且该公共注解从Java SE 6一开始就被包含其中. 2006 ...

  9. 【SSM 2】spring常用注解

    声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教! 一.基本概述 注解(Annotation):也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举 ...

  10. atititt.java定时任务框架选型Spring Quartz 注解总结

    atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...

随机推荐

  1. .net 网络编程

    1.首先说下计算机网络中的TCP/IP参考模型 TCP/IP把网络分为5层,每一层负责完成不同的功能 1)应用层:传输报文,提供各种网络应用,有FTP.SMTP.HTTP等协议 2)运输层:传输报文段 ...

  2. 当GitHub把我当成DDos攻击者拉进了黑名单中。。。

    Github黑名单自救+快速稳定FQ 异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 原因:项目冲突,没有先更新后提交,他自行更 ...

  3. 用pageGroup.js实现分页功能

    1.html页面中 引入 <link rel="stylesheet" type="text/css" href="/stylesheets/p ...

  4. ASP.NET WebAPi(selfhost)之文件同步或异步上传

    前言 前面我们讲过利用AngularJs上传到WebAPi中进行处理,同时我们在MVC系列中讲过文件上传,本文结合MVC+WebAPi来进行文件的同步或者异步上传,顺便回顾下css和js,MVC作为客 ...

  5. EntityFramework之摸索EF底层(八)

    前言 此篇文章我将深入去摸索edmx中一些不为人知的东西,有时候我们需要知道Code  First模型中一些存储以及映射的原理,个人觉得那是必要的也是有用的,因为很有可能SQL会出现一些其他问题,只有 ...

  6. iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements

    在<SQLite的C语言接口规范(一)>中介绍了如何去连接打开数据库,本篇博客就介绍如何操作数据库,本篇主要给出了如何执行数据库查询语句(Select), 然后遍历结果集.本篇博客就直接使 ...

  7. ECharts使用心得

    ECharts百度旗下图标插件,在展示地图.雷达图等方面有很好的支持. 应用场景: 自动生成X轴的数据: 设置:xAxis的type=value || type=time 并且设置series的dat ...

  8. iOS OC语言: Block底层实现原理

    先来简单介绍一下BlockBlock是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,Block可以在任何时候执行. Block和函数的相似性:(1)可以保存代码(2) ...

  9. 多种方法实现Loading(加载)动画效果

    当我们ajax提交一个按钮的时候,给那个按钮来个Loading效果会高端很多,体验也会上升个层次. 既能让用户知道正在提交中,也能防止二次提交,好处多多呢.

  10. spring笔记--通过注解(annotation)配置Bean

    Spring能够在classpath下自动扫描,侦测和实例化具有特定注解的组件,这在Spring中成为组件扫描(Component scanning). 特定组件的注解包括: @Component:基 ...