博客
关于我
@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/

你可能感兴趣的文章
MSCRM调用外部JS文件
查看>>
MSCRM调用外部JS文件
查看>>
MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
查看>>
MsEdgeTTS开源项目使用教程
查看>>
msf
查看>>
MSSQL数据库查询优化(一)
查看>>
MSSQL日期格式转换函数(使用CONVERT)
查看>>
MSTP多生成树协议(第二课)
查看>>
MSTP是什么?有哪些专有名词?
查看>>
Mstsc 远程桌面链接 And 网络映射
查看>>
Myeclipse常用快捷键
查看>>
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
myeclipse配置springmvc教程
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>