博客
关于我
@Import注解---导入资源
阅读量:357 次
发布时间:2019-03-04

本文共 3158 字,大约阅读时间需要 10 分钟。

在应用中,有时没有把某个类注入到IOC容器中,但在运用的时候需要获取该类对应的bean,此时就需要用到@Import注解。

例子如下:

先创建两个类,不用注解注入到IOC容器中,在应用的时候在导入到当前容器中。 

1:创建Man和Woman类

Man类:

package com.github.springbootdemo.demo;public class Man {}

Woman类:

package com.github.springbootdemo.demo;public class Woman {}

2、在启动类中需要获取Man和Woman对应的bean,需要用注解@Import注解把Man和Woman的bean注入到当前容器中。

package com.github.springbootdemo;import com.github.springbootdemo.demo.Man;import com.github.springbootdemo.demo.Woman;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.annotation.Import;@SpringBootApplication/** * 把用到的资源导入到当前容器中 */@Import({Man.class,Woman.class})public class SpringbootDemoApplication {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(SpringbootDemoApplication.class,args);        System.out.println(context.getBean(Man.class));        System.out.println(context.getBean(Woman.class));        context.close();    }}

3、运行该启动类,输出结果:

com.github.springbootdemo.demo.Man@1dcca8d3com.github.springbootdemo.demo.Woman@5631962

从输出结果知,@Import注解把用到的bean导入到了当前容器中。

4:当隐藏掉@Import注解的时候输出的结果如下:

2018-12-26 19:53:51.905Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.github.springbootdemo.demo.Man' available  INFO 6668 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:343)--- [           main]	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:335) 	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1101)c.g.s.SpringbootDemoApplication          	at com.github.springbootdemo.SpringbootDemoApplication.main(SpringbootDemoApplication.java:19)

另外,也可以导入一个配置类 

还是上面的Man和Woman类,现在在一个配置类中进行配置bean,然后在需要的时候,只需要导入这个配置就可以了,最后输出结果相同。

MyConfig 配置类:

package com.github.springbootdemo.demo;import org.springframework.context.annotation.Bean;public class MyConfig {    @Bean    public Man getMan(){        return new Man();    }    @Bean    public Woman getWoman(){        return new Woman();    }}

比如若在启动类中要获取Man和Woman的bean,如下使用:

package com.github.springbootdemo;import com.github.springbootdemo.demo.Man;import com.github.springbootdemo.demo.MyConfig;import com.github.springbootdemo.demo.Woman;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.annotation.Import;@SpringBootApplication/** * 把用到的资源导入到当前容器中 */@Import({MyConfig.class})public class SpringbootDemoApplication {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(SpringbootDemoApplication.class,args);        System.out.println(context.getBean(Man.class));        System.out.println(context.getBean(Woman.class));        context.close();    }}

一样可以得到上面的结果。

转载地址:http://bjrr.baihongyu.com/

你可能感兴趣的文章
MySQL Order By实现原理分析和Filesort优化
查看>>
mysql problems
查看>>
mysql replace first,MySQL中处理各种重复的一些方法
查看>>
MySQL replace函数替换字符串语句的用法(mysql字符串替换)
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql where中如何判断不为空
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>