Spring Aware标记接口使用案例解析

Aware接口是一个标记接口

XXXAare在Spring中表示对XXX可以感知,通俗点解释就是:如果在某个类里面想要使用Spring的一些东西,就可以通过实现XXXAware接口告诉Spring,Spring看到后就会送过来,而接受的方式是通过实现接口唯一的方法setXXX.比如ApplicationContextAware

ApplicationContextAware使用

编写SpringAware实现ApplicationContext接口

package com.rookie.bigdata.aware;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**

 * @author rookie
 * @version 1.0
 * @date 2020/3/21 22:58
  */

public class SpringAware implements ApplicationContextAware {

  private ApplicationContext applicationContext;

  //Spring容器会将ApplicationContext对象传入过来
  @Override
  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    System.out.println("传入的IOC容器applicationContext = [" + applicationContext + "]");
    this.applicationContext = applicationContext;
  }

  public ApplicationContext getApplicationContext() {
    return applicationContext;
  }

}

User实体类

package com.rookie.bigdata.domain;

public class User {
  private String username;
  private String address;

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getAddress() {
    return address;
  }

  public void setAddress(String address) {
    this.address = address;
  }

}

spring-aware.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="

http://www.springframework.org/schema/beans


http://www.springframework.org/schema/beans/spring-beans.xsd


http://www.springframework.org/schema/tx


http://www.springframework.org/schema/tx/spring-tx.xsd


http://www.springframework.org/schema/aop


http://www.springframework.org/schema/aop/spring-aop.xsd


http://www.springframework.org/schema/context


http://www.springframework.org/schema/context/spring-context.xsd">

  <bean id="user" class="com.rookie.bigdata.domain.User">
    <property name="username" value="张三"></property>
    <property name="address" value="北京"></property>
  </bean>

  <bean id="springAware" class="com.rookie.bigdata.aware.SpringAware"></bean>

</beans>

测试

@Test
  public void test1(){
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/aware/spring-aware.xml");

//    User user = (User) applicationContext.getBean("user");
//    System.out.println(user);

    SpringAware springAware = (SpringAware) applicationContext.getBean("springAware");
    ApplicationContext applicationContext1 = springAware.getApplicationContext();
    User user = (User) applicationContext1.getBean("user");
    System.out.println(user);
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间:2020-04-24

SpringBoot下如何实现支付宝接口的使用

这篇文章主要介绍了SpringBoot下如何实现支付宝接口的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前期准备: 参考之前写过的 支付宝接口引入servlet版本 Jar包引入: <!– 支付宝 –> <dependency> <groupId>net.guerlab</groupId> <artifactId>sdk-alipay-starter</artifactId&g

SpringBoot实现文件上传接口

摘要 公司都是采用SpringBoot作为项目框架,其实SpringBoot和SSM框架很接近,基本上只是将SSM的一些配置项修改为自动配置或者简单的注解配置就可以了,建议不了解的SpringBoot的朋友们可以了解一下,上手很快,其实文件上传框架根本没有多大关系.我只是顺便帮SpringBoot打个广告罢了. 正题 需求:需要实现一个文件上传的web接口. 1.先实现一个Controller接口,如下: package com.lanxuewei.utils.aspect; import co

Springboot单体架构http请求转换https请求来支持微信小程序调用接口

http请求转换https请求 1.话不多说,直接上代码! application.properties配置文件 #(密钥文件路径,也可以配置绝对路径) server.ssl.key-store= classpath:证书文件名.pfx #(密钥生成时输入的密钥库口令) server.ssl.key-store-password:123456 #(密钥类型,与密钥生成命令一致) server.ssl.key-store-type:PKCS12 证书一般最好放在resources目录下 接下来配置

Spring中@Import的各种用法以及ImportAware接口详解

@Import 注解 @Import注解提供了和XML中<import/>元素等价的功能,实现导入的一个或多个配置类.@Import即可以在类上使用,也可以作为元注解使用. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Import { /** * {@link Configuration}, {@link ImportSelector}, {@link I

Spring实现Aware接口自定义获取bean的两种方式

在使用spring编程时,常常会遇到想根据bean的名称来获取相应的bean对象,这时候,就可以通过实现BeanFactoryAware来满足需求,代码很简单: @Servicepublic class BeanFactoryHelper implements BeanFactoryAware { private static BeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory

Spring Boot配置接口WebMvcConfigurer的实现

WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制.基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口,WebMvcConfigurerAdapter 抽象类是对WebMvcConfigurer接口的简单抽象(增加了一些默认实现),但在在SpringBoot2.0及Spring5.0中WebMvcConfigurerAdapt

Spring ProtocolResolver策略接口示例

ProtocolResolver是一个策略接口,可以用于自定义协议解析, 比如spring就有一个 "classpath:"开头的特定协议(但是spring并不是自定义ProtocolResolver 实现来完成这个功能的) @FunctionalInterface public interface ProtocolResolver { @Nullable Resource resolve(String location, ResourceLoader resourceLoader);

Spring Validator接口校验与全局异常处理器

Spring Validator接口校验 上一篇日志使用Bean Validation校验机制,对基本数据类型进行校验,方法是在实体类属性上使用注解标识校验方式,最后在Controller类中具体方法的形参里添加@Vlidated注解.Bean Validation校验有一个缺点是,我们的数据校验是在Java实体类里进行约束的,如果我们有多个处理器方法需要用到同一个实体类,那么定义在实体类属性上的校验规则就不好划分了,有的处理器只需要校验一个属性,而有的处理器需要校验多个属性,我们不可能为每一个

基于SpringMVC的全局异常处理器介绍

近几天又温习了一下SpringMVC的运行机制以及原理 我理解的springmvc,是设计模式MVC中C层,也就是Controller(控制)层,常用的注解有@Controller.@RequestMapping.@Autowared.@Component,今天呢,我所要写的是SpringMVC的全局异常处理器,关联的接口有HandlerExceptionResolver(Eclipse用户可以按Ctrl+Shift+T进行搜索该接口),什么是全局异常处理器?为什么要用它呢? 在企业开发中,各种

yii2 开发api接口时优雅的处理全局异常的方法

前言:个人觉得,学习或温习一套Web框架,在快速阅读一遍文档后,应从路由,控制器,请求/响应对象,数据模型(Logic,Dao,Entity),全局异常处理几个方面下手,这几项了解后,框架上手就游刃有余了.然后我比较喜欢在开工前整理好框架的全局异常处理,方便写 api时错误的统一响应. 在api接口的开发过程中,我们需要对用户数据进行严格的校验,防止非法输入对服务产生安全问题,在开发过程中,我比较喜欢即时的以抛出异常的方式中断请求的处理,并以全局异常处理器格式化处理后统一返回给客户端. 今天就把

Spring MVC全局异常实例详解

Spring Aware标记接口使用案例解析

目录 无SpringMVC全局异常时的流程图 SpringMVC全局异常流程图 其实是一个ModelAndView对象 配置文件 applicationcontext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.

SpringBoot全局异常与数据校验的方法

异常处理是每个项目中都绕不开的话题,那么如何优雅的处理异常,是本文的话题.本文将结合SpringBoot框架一起和大家探讨下. 要思考的问题 在现在的前后端交互中,通常都规范了接口返回方式,如返回的接口状态(成功|失败)以及要返回的数据在那个字段取,或者说失败了以后提示信息从接口哪里返回,因此,如果想做全局异常,并且异常发生后能准确的返回给前端解析,那么需要异常发生时返回给前端的格式与正常失败场景的格式一致. 项目建立 利用idea 工具,很容易的搭建一个SpringBoot项目,要引入的mav

spring boot+自定义 AOP 实现全局校验的实例代码

最近公司重构项目,重构为最热的微服务框架 spring boot, 重构的时候遇到几个可以统一处理的问题,也是项目中经常遇到,列如:统一校验参数,统一捕获异常… 仅凭代码 去控制参数的校验,有时候是冗余的,但通过框架支持的 去控制参数的校验,是对于开发者很友好,先看下面的例子 @NotEmpty(message="手机号不能为空") @Size(min=11,max=11,message="手机号码长度不正确") @Pattern(regexp=StringUt

Spring Boot 参数校验的具体实现方式

1.背景介绍 开发过程中,后台的参数校验是必不可少的,所以经常会看到类似下面这样的代码 这样写并没有什么错,还挺工整的,只是看起来不是很优雅而已. 接下来,用Validation来改写这段 2.Spring Boot文档中的Validation 在Spring Boot的官网中,关于Validation只是简单的提了一句,如下 其实,Spring Validator和Hibernate Validator是两套Validator,可以混着用,这里我们用Hibernate Validator 3.

Spring请求参数校验功能实例演示

SpringMVC支持的数据校验是JSR303的标准,通过在bean的属性上打上@NotNull.@Max等进行验证.JSR303提供有很多annotation接口,而SpringMVC对于这些验证是使用hibernate的实现,所以我们需要添加hibernate的一个validator包: 依赖引用 compile ‘javax.validation:validation-api:2.0.0.Final’ compile ‘org.hibernate:hibernate-validator:6

SpringBoot如何优雅的处理全局异常

前言 本篇文章主要介绍的是SpringBoot项目进行全局异常的处理. SpringBoot全局异常准备 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要求 JDK:1.8 SpringBoot:1.5.17.RELEASE 首先还是Maven的相关依赖: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.

SpringBoot如何优雅地处理全局异常详解

前言 之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Controller下面,满屏幕的try{}catch,看着一点都不优雅,一点都不符合小明的气质,憋了这么久,小明今天终于决定对所有异常实施统一处理的方案. 开发准备 JDK8.正常的springboot项目 代码编写 通用异常处理 其实Spring系列的项目全局异常处理方式早已存在,只不过我们一直忙于搬

原文 

https://www.zhangshengrong.com/p/l51gwv7w10/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring Aware标记接口使用案例解析

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址