博客
关于我
@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 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>
MySQL 添加索引,删除索引及其用法
查看>>
MySQL 用 limit 为什么会影响性能?
查看>>
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>