spring框架为我们提供了注解功能。
使用注解编程,主要是为了替代xml文件,使开发更加快速。但是,xml文件的使用就是解决修改程序修改源代码,现在又不去使用xml文件,那么不就违背了开闭原则了么,得确是。不过么,注解也有注解的好,使用注解就不用配置那么多的xml文件啦,最重要的是开发效率高。。
在没有使用注解时,spring框架的配置文件applicationcontext.xml文件中需要配置很多的60e23eb984d18edbb092da6b8f295aba标签,用来声明类对象。使用注解,则不必在配置文件中添加标签拉,对应的是在对应类的“注释”位置添加说明。具体介绍如下:
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 ">
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框架学习(五)注解的内容。
