Spring的@Import註解將資源Bean加入到容器中

  1. @Import註解作用是什麼
    通過導入的方式將Bean加入SpringIoc容器中。
  2. @Import註解源碼解析
package org.springframework.context.annotation;

import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({java.lang.annotation.ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import
{
  Class<?>[] value();
}

@Import註解中有一個@Target註解表明它只能作用在類、接口、枚舉類上,@Retention註解說明註解可以保留到程序運行的時候,它會被加載進JVM中去。

  1. @Import註解使用示例
    創建一個Cat POJO類
package com.eureka.client.co;

public class Cat {
	
	private String catName;
	private int age;
	
	public String getCatName() {
		return catName;
	}
	public void setCatName(String catName) {
		this.catName = catName;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

在主類中加入@Import註解

package com.eureka.client;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.web.client.RestTemplate;

import com.eureka.client.co.Cat;

@EnableCircuitBreaker
@EnableEurekaClient
@SpringBootApplication
@Import(Cat.class)
public class EurekaClientApplication {

	public static void main(String[] args) {
		ApplicationContext context = SpringApplication.run(EurekaClientApplication.class, args);
		Cat cat = context.getBean(Cat.class);
		System.out.println(cat);
	}

	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}
}

輸出結果是:

com.eureka.client.co.Cat@4fd80300
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章