Spring
(常用注解):
@Conponate 泛指组件,当组件部好归类的时候,我呢吧可以使用这个注解对该类进行标注,但不推荐使用。
@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有一个required属性。是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@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(){}
}
SpringMVC
@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 execute(@PathVariable(“seckillId”) Long seckillId,
@PathVariable(“md5”) String md5,
@CookieValue(value = “userPhone”, required = false) Long phone) {//将cookie变量userPhone与phone绑定
…… ……
} -
@SessionAttributes
-
@ModelAttributes
-
@ResponseBody 作用是将controller的方法返回的对象直接写入HTTP response body中。通常用来返回JSON数据或者是XML数据。常和@RequestMapping一起使用。
Hibernate:
- @Entity
- @Table
- @Id
- @Column
- @GeneratedValue
- @OneToOne
- @OneToMany
- @JoinColumn
- @LazyCollection
Struts2
- @Action/@Actions
- @Result/@Results
- @Scope
- @ParenPackage
- @Namespace
- @Resource
Mybatis
- @Insert
- @Delete
- @Update
- @Select