一:
1.说明
在应用中,有时没有把某个类注入到IOC容器中,但在运用的时候需要获取该类对应的bean,此时就需要用到@Import注解。
二:示例一
1.说明
基于007接着做的测试。
2.Bean
新建Cat,Dog类
3.使用Import
1 package com.jun.web; 2 3 import com.jun.enableautoconfiguration.Hello; 4 import com.jun.enableautoconfiguration.impo.Dog; 5 import org.slf4j.Logger; 6 import org.slf4j.LoggerFactory; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.boot.SpringApplication; 9 import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 10 import org.springframework.boot.autoconfigure.SpringBootApplication; 11 import org.springframework.context.ConfigurableApplicationContext; 12 import org.springframework.context.annotation.Import; 13 import org.springframework.core.env.ConfigurableEnvironment; 14 import org.springframework.web.bind.annotation.RequestMapping; 15 import org.springframework.web.bind.annotation.RestController; 16 17 18 @EnableAutoConfiguration 19 @RestController 20 @Import({Dog.class}) 21 public class WebApplication { 22 private static final Logger logger = LoggerFactory.getLogger(WebApplication.class); 23 24 @Autowired 25 private Hello hello; 26 27 @RequestMapping("/") 28 public String index() { 29 return hello.sayHello(); 30 } 31 32 public static void main(String[] args) { 33 ConfigurableApplicationContext context = SpringApplication.run(WebApplication.class, args); 34 ConfigurableEnvironment environment = context.getEnvironment(); 35 logger.info("hello.msg:{}",environment.getProperty("hello.msg")); 36 37 logger.info("dog:{}",context.getBean(Dog.class)); 38 39 } 40 41 }
效果:
2019-08-22 13:59:14.569 INFO 7812 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2019-08-22 13:59:14.571 INFO 7812 --- [ main] com.jun.web.WebApplication : Started WebApplication in 1.497 seconds (JVM running for 2.169) 2019-08-22 13:59:14.572 INFO 7812 --- [ main] com.jun.web.WebApplication : hello.msg:uuibiu 2019-08-22 13:59:14.573 INFO 7812 --- [ main] com.jun.web.WebApplication : dog:com.jun.enableautoconfiguration.impo.Dog@4cfa8227
三:示例二
1.说明
现在在一个配置类中进行配置bean,然后在需要的时候,只需要导入这个配置就可以了
不要配置太多类进来。
2.配置类
1 package com.jun.enableautoconfiguration.impo; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.ComponentScan; 5 import org.springframework.context.annotation.Configuration; 6 7 @Configuration 8 public class MyConfig { 9 @Bean 10 public Dog getDog(){ 11 return new Dog(); 12 } 13 14 }
3.使用
1 package com.jun.web; 2 3 import com.jun.enableautoconfiguration.Hello; 4 import com.jun.enableautoconfiguration.impo.Dog; 5 import com.jun.enableautoconfiguration.impo.MyConfig; 6 import org.slf4j.Logger; 7 import org.slf4j.LoggerFactory; 8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.boot.SpringApplication; 10 import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 11 import org.springframework.boot.autoconfigure.SpringBootApplication; 12 import org.springframework.context.ConfigurableApplicationContext; 13 import org.springframework.context.annotation.Import; 14 import org.springframework.core.env.ConfigurableEnvironment; 15 import org.springframework.web.bind.annotation.RequestMapping; 16 import org.springframework.web.bind.annotation.RestController; 17 18 19 @EnableAutoConfiguration 20 @RestController 21 @Import({MyConfig.class}) 22 public class WebApplication { 23 private static final Logger logger = LoggerFactory.getLogger(WebApplication.class); 24 25 @Autowired 26 private Hello hello; 27 28 @RequestMapping("/") 29 public String index() { 30 return hello.sayHello(); 31 } 32 33 public static void main(String[] args) { 34 ConfigurableApplicationContext context = SpringApplication.run(WebApplication.class, args); 35 ConfigurableEnvironment environment = context.getEnvironment(); 36 logger.info("hello.msg:{}",environment.getProperty("hello.msg")); 37 38 logger.info("dog:{}",context.getBean(Dog.class)); 39 40 } 41 42 }