精华内容
下载资源
问答
  • Spring 常用注解

    2017-11-16 13:04:51
    Spring 常用注解

    @postconstruct

    展开全文
  • spring常用注解

    2017-08-23 23:52:30
    spring 常用注解

    @Component:通用注解,用于任何Bean
    @Repository:用于注解DAO层(持久层)
    @Service:用于注解Service类(服务层)
    @Controller:注解Controller类(控制层)

    @Scope(”prototype”)默认:singleton,用于类
    singleton作用域:Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,则只会返回该Bean的同一实例。singleton作用域是Spring中的缺省作用域。
    prototype作用域:prototype作用域的Bean会导致在每次对该Bean进行请求(将其注入到另一个Bean中,或者以程序的方式调用容器的getBean()方法时都会创建一个新的Bean实例。对于具有prototype作用域的Bean,有一点很重要,即Spring不能对该Bean的整个生命周期负责。具有prototype作用域的Bean创建后交由调用者负责销毁对象回收资源。
    总结一下就是:
    singleton 只有一个实例,也即是单例模式。
    prototype访问一次创建一个实例,相当于new。
    应用场合:
    1.需要回收重要资源(数据库连接等)的事宜配置为singleton,如果配置为prototype需要应用确保资源正常回收。
    2.对有状态的Bean应使用prototype作用域,而对无状态的Bean则应该使用singleton作用域。
    (ps:无状态的bean:提供工具类的函数对象,仅仅提供调用服务;
    有状态的bean:维持了一个会话的状态,每一次调用都会改变会话的状态。)

    @Required:适用于bean属性的setter方法
    这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在bean定义或通过自动装配一个明确的属性值

    @Autowired:可将@Autowired注解理解为”传统”的setter方法,可用于构造器或成员变量
    默认情况下,如果因找不到合适的bean将会导致autowiring失败抛出异常,可以通过设置@Autowired(required=false)的方式避免。
    每个类只有一个构造器被标记为required=ture,因为@Autowired的必要属性,建议使用@Required注解
    可以使用@Autowired注解那些众所周知的解析依赖性接口, BeanFactoryAware, ApplicationContext, Environment, ResourcesLoader, ApplicationEventPublisher ,MessageSource
    可以通过添加注解给需要该类型的数组的字段或方法,以提供ApplicationContext中所有特定类型的bean
    可以用于装配key为String的Map

    @Inject等效于@Autowired,可以使用于类,属性,方法,构造器

    @Qualifier:按类型(type)自动装配可能多个bean实例的情况,可以使用Spring的@Qualifier注解缩小范围(或指定唯一),也可以用于指定单独的构造器参数或方法的参数(多个),可用于注解集合类型变量, 如:@Qualifier(“beanimplOne”)

    @Resource:通过名字进行注解注入,可用于集合或者Map类型的bean(@Autowired并不适用),
    适用于成员变量,只有一个参数的setter方法,所以在目标是构造器或一个多参数方法时,最好的方式是使用@Qualifier注解;
    @Resource有一个name属性,如 : @Resource(name = “myBean”),如果没有显式地指定@Resource的name,默认的名称是从属性名或者setter方法得出

    @Named:使用特定名称进行依赖注入,使用@Named。@Named与@Component是等效的,和@Qualifier相似

    展开全文
  • Spring常用注解

    千次阅读 多人点赞 2019-04-11 21:37:53
    Spring常用注解包括了SpringMVC的注解,SpringMVC是Spring的子项目 声明bean的注解 @Controller 标注控制层组件 @Service 标注业务层组件 @Respostory 标注数据访问组件 @Component 标注@Controller、@Service、@...


    Spring常用注解包括了SpringMVC的注解,SpringMVC是Spring的子项目

    声明bean的注解

    @Controller 标注控制层组件

    @Service 标注业务层组件

    @Respostory 标注数据访问组件

    @Component 标注@Controller、@Service、@Respostory以外的其他组件

    注入Bean的注解

    @Autowired 按类型注入,注入的属性必须提供set方法

    注意:@Resource按名称注入,属于J2EE范畴,不属于Spring框架,@Autowired属于Spring框架

    @Qualifier 与@Autowired配合使用

    接口或父类可能存在多个实现类或子类的实例,因此通过@Qualifier来指定名称的实例注入

    配置类的相关注解

    @Configuration 注解在类上,声明当前类为配置类,相当于xml中<beans>标签

    @Bean 注解在方法上,声明当前方法的返回值是一个由Spring管理的Bean,在类spring加载的时 候就会创建该Bean,相当于xml中bean标签中配置的单个bean对象

    单元测试注解

    @RunWith:指定Spring集成单元测试的运行环境

    @ContextConfiguration:指定Spring的配置文件路径

    时间格式的转换注解

    @DateTimeFormat 前台传往后台的时间进行转换

    注意:后台传往前台的时间进行转换用@JsonFormat,非spring注解,需要导入Jackson的jar包

    SpringMVC注解

    • @Controller:标识Controller控制器,SpringMVC扫包时才会创建控制器组件

    • @ControllerAdvice:声明全局异常处理类

      @ControllerAdvice声明的全局异常处理类中,处理异常的方法均使用@ExceptionHandler进行注解

      通过@ControllerAdvice注解实现异常处理的作用:全局异常处理,减少代码入侵

    • @ExceptionHandler:声明异常处理方法

      1. @ExceptionHandler注解的处理异常的方法中可以加入Exception类型的形参,执行时会自动注入异常对象
      2. @ExceptionHandler注解的处理异常的方法可以不在@ControllerAdvice声明的全局异常处理类中,而在出现异常的类中
      3. @ControllerAdvice和@ExceptionHandler只能处理 Controller 层未捕获(往外抛)的异常,对应拦截器的异常无法无法处理
      4. 如果当前Controller类中的方法出现异常,会优先使用当前Controller类中的@ExceptionHandler标记的异常处理方法,当前Controller类中找不到方法时,才会去全局异常处理类中找异常处理方法。即便全局异常处理的异常类型与当前异常对象类型更匹配,也会优先使用局部的【就近原则】

    • @RequestHeader 获取请求头中指定属性的值

    • @PathVariable:映射URL中占位符参数绑定到Controller处理方法的参数

    • @ModelAttribute 用于打了注解@RequestMapping的方法或参数上

      1. 当@ModelAttribute注解在方法上,此方法会在每一个@RequestMapping标注的方法执行之前执行,如果有返回值,则自动将该返回值加入到ModelMap中。如果@ModelAttribute没有指定value属性,则modelMap中key为类型名(首字符小写即可);如果指定了@ModelAttribute指定value属性,则modelMap中key为value属性指定值
      2. 当注解在参数时,当请求数据的编码格式为 application/x-www-form-urlencoded时,将请求参数赋值给Controller控制器中方法的形参,通过指定value属性值与方法的形参进行绑定
      3. @ModelAttribute的value属性值与调用方法的形参名不一致时,可以在调用方法的形参前也加注解@ModelAttribute(value=“属性名”),指定注入数据给指定形参
    • @RequestParam 当请求数据的编码格式为 application/x-www-form-urlencoded时,将请求参数赋值给Controller控制器中方法的形参

    • @RequestBody 当请求数据的编码格式为 application/jsonapplication/xml等非 application/x-www-form-urlencoded类型时,获取请求体中的数据。当请求数据的编码格式为application/x-www-form-urlencoded时,@RequestBody 也可以处理

      注意:当请求数据的编码格式为multipart/form-data时,@RequestBody 无法处理

    • @RequestMapping:用在类和方法上,用于处理请求地址的映射,常用属性value【映射地址】、method【请求方法】、params【请求参数】、heads【请求头】


    • @ResponseBody:注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

    AOP切面相关注解

    • 切面【Aspect】:切点和通知组成
    • 连接点【JoinPoint】:程序执行过程中明确的点,如方法前、方法后
    • 切点【PointCut】:并不是所有的连接点都要切一刀,带有通知的连接点叫做切点
    • 通知、增强【Advice】:想要在切点处实现的功能

    @Aspect 声明当前类是一个切面,类中定义了切点和通知

    @PointCut 声明切点

    五种通知

    @PointCut(“表达式”) 定义切点,注解的属性中配置切点位置

    @Before 前置通知,该注解标识的通知在切点之前执行

    @AfterReturning 后置通知,该注解标识的通知在切点之后执行

    @AfterThrowing 异常通知

    @After 最终通知 无论方法是否执行都会执行

    @Autowired 与@Resource的区别:

    • @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上

    • @Autowired是spring的注解,@Resource是J2EE的注解

    • @Autowired默认按类型注入Bean。

      1. 注入的Bean对象必须存在,如果允许为null,可设置required属性为false
      2. @Autowired要想按名称注入,必须与@Qualifier搭配使用

      @Resource默认按名称装配Bean

      @Autowired和@Qulifiler注解

    • @Resource有两个常用属性:name和type。不配置属性时,默认按变量名称注入

      • @Resource装配顺序
        1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
        2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
        3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
        4. 如果没有指定name属性和Type属性,默认按注解所在字段的变量名进行注入,找不到再按类型注入
      • @Autowired默认按类型进行匹配。如果发现找到多个同类型的Bean,则报异常。
        • 默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,默认required为true即不能为null
        • 如果想按名称注入,则可以结合@Qualifier注解进行使用@Qualifier(value=“名称”)
      //接口或父类可能存在多个实现类或子类的实例,因此通过@Qualifier来指定名称的实例注入
      @Autowired   
      @Qualifier("userServiceImpl")   
      public IUserService userService;   //指定接口只能注入某个实现类
      

    @RequestParam

    @RequestParam有四个属性:name属性、value属性、required属性、defaultValue属性,

    • required属性:@RequestParam配置的前端参数是否一定要传,默认为true,必须传该参数
    • name属性、value属性的作用一样
    • defaultValue属性:设置参数默认值,如果设置了默认值,则required属性自动变为false,此时如果前端不传参,则使用设置的默认值
    //常用于前端传参和后端不一致的情况,@RequestParam注解可以自动进行转化
    @RequestMapping("/test")
    public String test(@RequestParam(value = "name") String username){
        System.out.println("username");
        return "success";
    }
    

    @RequestParam接收的是key-value里面的参数,get请求和post请求均可

    @RequestBody

    @RequestBody 接收的是请求体里面的数据,只能用于post请求,因为get请求的参数在请求头中

    Post提交的数据为json格式时,注解@RequestBody 会自动封装到对象中

    @RequestMapping("/rb")
    public Dept test1(@RequestBody Dept dept){
        return dept;
    }
    

    @PathVariable

    @RequestMapping("/del/{id}")
    public void delete(@PathVariable Long id){
        iDeptService.deleteByPrimaryKey(id);
    }
    

    @ResponseBody

    @RequestMapping("findAll")
    @ResponseBody
    public List<TEmployee> findAll() {
        return employeeService.findAll();
    }
    
    • @ResponseBody 表示该方法的返回结果直接写入HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】
    • @RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。

    @RequestHeader

    @RequestHeader用于获取请求头中属性的值,但get请求在请求头中传递的参数无法获取

    @RequestMapping("/rh")
    public void test2(@RequestHeader(value="Accept-Encoding") String str){
        System.out.println(str);
    }
    

    @RequestMapping

    @RequestMapping注解常用属性value、method、params、headers

    //method属性:指定请求方式
    @RequestMapping(value = "/test",method = RequestMethod.POST)
    public String test(@RequestParam(value = "name",defaultValue = "go") String username){
        System.out.println(username);
        return "success";
    }
    
    //指定参数需要满足的条件:params = {"name", "id!=1", "id=2"}必须包含名为name的参数,id必须不等于1,必须等于2
    @RequestMapping(value = "/rh", params = {"name", "id!=1", "id=2"})
    public void test2(Dept dept) {
        System.out.println(dept);
    }
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,000
精华内容 4,000
关键字:

spring常用注解

spring 订阅