Spring的@Import注解将资源Bean加入到容器中

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaomingyang/article/details/86620820
  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

猜你喜欢

转载自blog.csdn.net/yaomingyang/article/details/86620820
今日推荐