版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaomingyang/article/details/86620820
- @Import注解作用是什么
通过导入的方式将Bean加入SpringIoc容器中。 - @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中去。
- @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