当前位置: 首页 > news >正文

月饼网站建设软件搭建平台

月饼网站建设,软件搭建平台,网络公司是什么行业,网址大全123上网导航网址123我们知道spring boot会通过ComponentScan定义包扫描路径进行业务定义的bean的加载,但是对于很多不在此包路径下定义的bean怎么办呢?比如其他jar包中定义的。这时候import就发挥作用了,通过它也可以实现bean的定义。具体是怎么做的呢&#xff…

我们知道spring boot会通过@ComponentScan定义包扫描路径进行业务定义的bean的加载,但是对于很多不在此包路径下定义的bean怎么办呢?比如其他jar包中定义的。这时候import就发挥作用了,通过它也可以实现bean的定义。具体是怎么做的呢,我们先看一下Import这个注解的类:

它的value属性方法中明确说明,可以是Configuration,ImportSelector,ImportBeanDefinitionRegistrar,或者其他常规的组件类。下面我们一一举例:

我们先和大部分jar包一样,定义一个EnableUserConfiguration,然后在META-INF/spring.factories中加入配置,这样EnableUserConfiguration就会在Spring boot启动时加载。此时它是个空的类,后面我们在这个上面展示Import四种应用方式

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.mall.provider.config.EnableUserConfiguration
public class EnableUserConfiguration {}

(1)Configuration

我们在扫描包路径外定义了一个Configuration配置类:

package com.mall.pkgscan1;import com.mall.pkgscan1.bean.ClassInfo;
import com.mall.pkgscan1.bean.Student;
import com.mall.pkgscan1.bean.UserInfo;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @since 2024/11/28 15:17*/
@Configuration
public class UserConfiguration {@Beanpublic UserInfo userInfo() {return new UserInfo();}@Bean@ConditionalOnBean(ClassInfo.class)public Student student() {class Student1 {}new Student1();return new Student();}@Beanpublic ClassInfo classInfo() {return new ClassInfo();}
}

然后在EnableUserConfiguration上用@Import导入此配置类

@Import(UserConfiguration.class)
public class EnableUserConfiguration {}

这样UserConfiguration中定义的Bean就会被加载了,我们直接在调试状态下可以看到使用上下文是可以获取到UserConfiguration中定义的Bean的

(2)ImportSelector

这种方式我们需要定义一个实现ImportSelector的类,然后赋值给Import注解的Value。为了方便展示,这里直接在EnableUserConfiguration中定义了一个静态内部类,代码如下:

@Import(EnableUserConfiguration.UserSelector.class)
public class EnableUserConfiguration {public static class UserSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[]{"com.mall.pkgscan1.UserConfiguration"};}}
}

通过selectImports返回的类的全限定名数组,就是我们想要Spring去加载的Bean。

(3)ImportBeanDefinitionRegistrar

此方式需要导入类ImportBeanDefinitionRegistrar接口。然后重写它的registerBeanDefinitions方法逻辑,自行实现bean定义,然后通过注册器进行bean的注册。此种方式可以随意自定义bean的名称

@Import(EnableUserConfiguration.UserRegistrar.class)
public class EnableUserConfiguration {public static class UserRegistrar implements ImportBeanDefinitionRegistrar {@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {RootBeanDefinition beanDefinition = new RootBeanDefinition(UserConfiguration.class);registry.registerBeanDefinition("userConfiguration", beanDefinition);}}
}

(4)导入常规组件类

这种方式最简单,但也最局限。

@Import({UserInfo.class, ClassInfo.class})
public class EnableUserConfiguration {
}

上面代码把UserInfo和ClassInfo这两个普通类加载为Bean。但因为没有直接导入它两的外围类UserConfiguration这个配置类,所以不能用它的Bean方法获取,而是用对应类获取:下方的两种获取方式,UserInfo可以获取到bean,但ClassInfo不行

http://www.yayakq.cn/news/993799/

相关文章:

  • 网站分类查询定制软件开发公司介绍
  • 做家居建材出口网站有哪些医学ppt模板免费下载 素材
  • 扬州公司做网站公司wordpress的网站怎么保存
  • 高校图书馆网站的建设方案wordpress 首页模板
  • 微站网站查询网
  • 武义企业网站建设卯兔科技西安网站建设
  • 手机网站如何建设机械加工网站模板
  • 深圳做微信商城网站网站建设需要具备什么条件
  • 做夹具需要知道的几个网站网站开发的意义和目的
  • 做100个网站效果图网站可以做多少事情
  • 有没有做美食的网站中国互联网协会会员单位
  • 找大学生做家教的网站营销推广费用包括哪些
  • 哪个行业对网站建设需求大文创产品设计思路
  • 相亲网站的女人 做直播的网站推广效果怎么样
  • 湘潭网站建设优选磐石网络wordpress用户前端创建相册
  • 手机模板网站模板下载网站有哪些内容网站后台管理界面下载
  • 四川省建设厅网站那些网站可以找得到做货代的
  • 建设部促进中心网站wordpress 3秒加载
  • 网站设计课程总结免费网站你知道我的意思的
  • 免费领手机 网站网站自响应
  • 大连建站免费模板商务网站大全
  • 精品网站制作无锡网站建设优化
  • 购物网站功能介绍拟定网站建设合同的工作过程记录
  • 公司被其它人拿来做网站外贸销售平台现在有哪些
  • 网站建设加数据库中美关系最新消息2021
  • php yaf 网站开发框架wordpress 轮播广告
  • 新闻资讯网站模板下载网站建设信息服务费计入什么科目
  • 动态手机网站怎么做开发网站监控推荐
  • 自己做网站建设制作wordpress 4.7 josn
  • 硬盘做网站空间四川省住房和城乡建设厅网站无法进入