1. 程式人生 > 程式設計 >Spring Aware標記介面使用案例解析

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。