008 @Import作用

一:

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 }
原文地址:https://www.cnblogs.com/juncaoit/p/11393996.html