SSH、SSM中常用的注解学习总结

注解可以简化配置过程,免得一堆xml标签看的眼花。

大体过程:表示层(*.jsp,...)调用控制层(controller,action),控制层调用业务层(service),业务层调用数据访问层(dao)。

Spring:

  • @Component        泛指组件,当组件不好归类的时候,我们可以使用这个注解对该类进行标注。不推荐使用。
  • @Controller           对应控制层的Bean,也就是Action。标记在一个类上。
  • @Service               对应业务层的Bean,可以加入名字如@Service("userService")。当Action需要使用该业务层的实例时,只需在Action中声名一个同名的变量来接收该对象(由Spring创建并注入)即可(配合@Resource注解)。标记在一个类上。
@Service("userService")
public class UserServiceImpl implements UserService {...}
// 注入userService
@Resource(name = "userService")
private UserService userService;

 

  • @Repository           对应数据访问层的Bean,用法同@Service。当Service需要使用该数据访问层的实例时,只需声名一个同名变量来接受该对象(由Spring创建并注入)即可(配合@Resource注解)。标记在一个类上。
@Repository(value="userDao")
public class UserDaoImpl extends BaseDaoImpl<User> {...}
//注入userDao
@Resource(name = "userDao")
private BaseDao<User> userDao;
  • @Autowired       一般用于消除 setter、getter方法。Spring会将这些传递过来的值或者引用自动分配给那些属性。可以对类成员变量、方法及构造函数进行标注。@Autowired(required=false)表示依赖不是必须的,当没有找到相应bean的时候可以为null。他是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier。      
  • @Inject               类似于@Autowired,不同的是@Autowired有一个request属性。是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Named。
  • @Value               可以简化读取properties文件中的配置值。
  • @AspectJ           他标记在一个类上声名切面。Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置:
<!-- proxy-target-class 默认为false,表示使用jdk动态代理织入增强,当配为<aop:aspectj-autoproxy poxy-target-class="true"/>时,表示使用CGLib动态代理技术织入增强 -->
<aop:aspectj-autoproxy/> 
  • @Pointcut             @Pointcut(“execution(返回类型  方法所属类的全限定名.方法(参数))”)注解在新写的方法前来定义切点。
  • @Before                在切点之前执行。
  • @AfterReturning  在切点执行成功之后执行。
  • @After                   在切点之后执行。
  • @AfterThrowing   在切点抛出异常后执行。
@Aspect
public class WQF{

@Pointcut("execution(* *.perform(..))")
public void performance(){}

@Before("performance()")
public void beforeMethod(){}

@AfterReturning("performance()")
public void afterReturingMethod(){}

@After("performance()")
public void afterMethod(){}

@AfterThrowing("performance()")
public void afterThrowingMethod(){}

}

Hibernate:

  • @Entity
  • @Table
  • @Id
  • @Column
  • @GeneratedValue
  • @OneToOne
  • @OneToMany
  • @JoinColumn
  • @LazyCollection
     

Struts2:

  • @Action/@Actions
  • @Result/@Results
  • @Scope
  • @ParentPackage
  • @Namespace
  • @Resource

Spring MVC

  • @Controller            使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。之后把这个控制器类交给Spring 来管理。有两种方法:
<!--方式一 在SpringMVC 的配置文件中定义bean 对象-->
<bean class="org.wqf.controller.Controller"/>
<!--方式二 在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器-->
<context:component-scan base-package = "org.wqf.controller" />
  • @RequestMapping    使用@RequestMapping 注解的方法才是真正处理请求的处理器。可用于类或方法上。常用的属性有value和method。
value:     指定请求的实际地址,指定的地址可以是URI Template 模式;
method:    指定请求的method类型, GET、POST、PUT、DELETE等;
produces:   指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;比如:produces = {"application/json;charset=UTF-8"})

例如: 用于类上的 @RequestMapping("/seckill") 表示指定的请求地址为 localhost:8080/seckill/...。
      用于方法上的 @RequestMapping(value = "/{seckillId}/detail", method = RequestMethod.GET) 表示指定请求地址为 localhost:8080/seckill/1000/detail 时由该方法来处理。


 

  • @RequestParam       @requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter("name")

@Resource和@Autowired都是做bean的注入时使用:

  • @Resource                Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。
  • @Autowired                @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
  • @PathVariable            可以用来映射URL中的占位符到目标方法的参数中。比如:
@RequestMapping(value = "/{seckillId}/detail", method = RequestMethod.GET)
    public String detail(@PathVariable("seckillId") Long seckillId, Model model) {
        …… ……
    }
  • @CookieValue            用来获取Cookie中的值,将变量与指定的value参数名称绑定。value:参数名称;required:是否必须;defaultValue:默认值。比如:
public SeckillResult<SeckillExecution> execute(@PathVariable("seckillId") Long seckillId,
                                               @PathVariable("md5") String md5,
                                               @CookieValue(value = "userPhone", required = false) Long phone) {//将cookie变量userPhone与phone绑定
    …… ……
}
  • @SessionAttributes
  • @ModelAttribute
  • @ResponseBody        作用是将controller的方法返回的对象直接写入HTTP response body中。通常用来返回JSON数据或者是XML数据。常和@Requestmapping一起使用。

Mybatis

  • @Insert
  • @Delete
  • @Update
  • @Select

 

参考博客: 使用注解来构造IoC容器

                   springmvc常用注解

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值