美文网首页
Spring常用注解配置

Spring常用注解配置

作者: Mr_J316 | 来源:发表于2019-06-13 13:38 被阅读0次

    IOC相关

    首先要在配置文件中启用注解扫描:

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

    <context:component-scan />标签负责扫描哪些类有注解,base-package为需要扫描的包路径(含所有子包)。

    @Controller:用于标注控制器组件
    @Service:用于标注业务层组件
    @Repository:用于标注数据访问组件
    @Component:用于对比较中立的类进行注解。与前三个注解等效。

    @Resource:用于依赖关系装配。默认按名称装配。名称可以通过@Resource的name属性指定。如果没有指定name属性,则支持自动装配。
    @Autowired:自动装配
    该注解可以实现对方法形参的自动装配,查找被标注的方法的入参类型的Bean,并调用方法自动注入

    有注解的类,会自动注册为bean,并将bean的名字设置为该类的类名,但首字母小写,可以通过添加参数来指定名称。例:@Controller("con")

    AOP相关

    启动基于注解的AspectJ支持

    <aop:aspectj-autoproxy />
    

    @Aspect:使用@Aspect注解的类,Spring会当作切面类处理。
    @Before(切入点表达式):前置通知
    @AfterReturning(切入点表达式):后置通知
    @AfterThrowing(pointcut = 连接点,throwing = "e"):异常通知
    必须使用@AfterThrowing(pointcut = 连接点,throwing = "e")的形式,否则会出现”error at ::0 formal unbound in pointcutd”错误
    @After(切入点表达式):最终通知
    @Around(切入点表达式):环绕通知
    @Pointcut:定义切入点表达式,需要同时定义一个切入点方法,返回值为void且方法体为空

    事务管理

    <!—为事务管理器注册注解驱动器-->
    <tx:annotation-driven transaction-manager="txManager"/> 
    

    @Transactionald 使用该注解的类会添加事务
    @Transactional(readOnly = true) 对不涉及写数据库写入操作的方法,可加入只读属性以提高速度

    MVC

    @RequestMapping("url") 注解请求地址
    给处理方法添加RequestMapping注解
    对应前端请求地址http://localhost:8080/TestApp/login.do

    @ResponseBody
    Spring4的控制器可以使用response对象做出ajax响应,并利用@ResponseBody注解自动将数据生成json响应给浏览器。

    @ModelAttribute
    被@ModelAttribute注释的方法会在此controller每个方法执行前被执行, 可以用来拦截请求、控制登录权限等


    常用注解

    Controller
    注解一个类表示控制器,Spring MVC会自动扫描标注了这个注解的类。

    RequestMapping
    请求路径映射,可以标注类,也可以是方法,可以指定请求类型,默认不指定为全部接收。

    RequestParam
    放在参数前,表示只能接收参数a=b格式的数据,即 Content-Type为 application/x-www-form-urlencoded类型的内容。

    RequestBody
    放在参数前,表示参数从request body中获取,而不是从地址栏获取,所以这肯定是接收一个POST请求的非a=b格式的数据,即 Content-Type不为 application/x-www-form-urlencoded类型的内容。

    ResponseBody
    放在方法上或者返回类型前,表示此方法返回的数据放在response body里面,而不是跳转页面。一般用于ajax请求,返回json数据。

    RestController
    这个是Controller和ResponseBody的组合注解,表示@Controller标识的类里面的所有返回参数都放在response body里面。

    PathVariable
    路径绑定变量,用于绑定restful路径上的变量。

    @RequestHeader
    放在方法参数前,用来获取request header中的参数值。

    @CookieValue;
    放在方法参数前,用来获取request header cookie中的参数值。

    GetMapping PostMapping PutMapping.. *Mapping的是Spring4.3加入的新注解,表示特定的请求类型路径映射,而不需要写RequestMethod来指定请求类型。

    演示

    import org.dom4j.util.UserDataElement;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    @RequestMapping("/test")
    public class TestController {
        
        @RequestMapping(value = "/get/{no}", method = RequestMethod.GET)    
        @ResponseBody   
        public Object get(@PathVariable("no") String no) {        
              return new UserDataElement("");    
        }  
    
        @RequestMapping(value = "/save", method = RequestMethod.POST)    
        public void save(@RequestBody UserDataElement user) {
    
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring常用注解配置

          本文链接:https://www.haomeiwen.com/subject/cgajfctx.html