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

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

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

海之浪子   2021-04-22 我要评论

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);
  }

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们