当前位置:网站首页>Implement a middleware from -1
Implement a middleware from -1
2022-06-21 22:08:00 【InfoQ】
New projects

test-infrademo<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.aixiaoxian.infra</groupId>
<artifactId>aixiaoxian-infra</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>aixiaoxian-infra</name>
<description>aixiaoxian-infra</description>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<modules>
<module>demo</module>
<module>test-infra</module>
</modules>
<dependencies>
</dependencies>
<build>
<plugins>
<!-- Source -->
<plugin>
<artifactId>maven-source-plugin</artifactId>
<inherited>true</inherited>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Developing middleware
resourcesMETA-INFA/spring.factoriesorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.aixiaoxian.testInfra.config.TestConfiguration
TestConfiguration@Bean@Configuration
public class TestConfiguration implements BeanDefinitionRegistryPostProcessor, EnvironmentAware {
private Environment environment;
@Bean
public TestManager getTestManager() {
return new TestManager();
}
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
}
TestManager@Slf4j
public class TestManager {
public TestManager() {
init();
}
public void init(){
log.info("TestManager start");
}
}
demo <dependency>
<groupId>com.aixiaoxian.infra</groupId>
<artifactId>test-infra</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Change position
BeanBeanDefinitionRegistryPostProcessorTestConfigurationpostProcessBeanDefinitionRegistryaiManager@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(AiManager.class);
beanDefinitionBuilder.addConstructorArgValue(this.environment);
beanDefinitionRegistry.registerBeanDefinition("aiManager", beanDefinitionBuilder.getBeanDefinition());
}
@Slf4j
public class AiManager {
private Environment environment;
public AiManager(Environment environment) {
this.environment = environment;
init();
}
public void init(){
log.info("AiManager start");
}
}
Another pose
@ImportTestImportSelectorTestImportSelector@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({TestImportSelector.class})
@Documented
public @interface TestAnnotation {
}
public class TestImportSelector implements DeferredImportSelector {
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
return new String[]{AnnotationConfiguration.class.getName()};
}
}
AnnotationConfigurationpublic class AnnotationConfiguration implements BeanDefinitionRegistryPostProcessor {
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(AnnotationManager.class);
beanDefinitionRegistry.registerBeanDefinition("annotationManager", beanDefinitionBuilder.getBeanDefinition());
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
}
}
@Slf4j
public class AnnotationManager {
public AnnotationManager() {
init();
}
public void init(){
log.info("AnnotationManager start");
}
}
demo@SpringBootApplication
@TestAnnotation
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2022-06-21 19:05:07.433 INFO 4598 --- [ main] c.a.testInfra.manager.TestManager : TestManager start
2022-06-21 19:05:07.456 INFO 4598 --- [ main] c.a.testInfra.manager.AiManager : AiManager start
2022-06-21 19:05:07.456 INFO 4598 --- [ main] c.a.testInfra.manager.AnnotationManager : AnnotationManager start
边栏推荐
- From casual to boring to sick
- How to search foreign literature efficiently?
- 博图仿真HMI与真实1200PLC通讯失败
- Abbkine细胞周期染色试剂盒特色和实验建议
- Tx9118 Synchronous Boost IC
- Go unit test mocks the database CRUD
- JS object operation (much simpler than C object)
- Time modification method for search device of Jerry's Bluetooth transmitter [chapter]
- 传承百年经典的瑞吉管家静待您的优雅旅程再次开启
- Guangdong CDC reminds: the summer vacation is coming, so the returned college students can "return home" safely
猜你喜欢

全屋智能家居品牌“智汀科技”有体验中心?

opencvsharp阈值分割threshold函数的ThresholdTypes

AWS CloudWatch

Shanghai Xiangwei electromechanical Co., Ltd., a state-owned enterprise, has reached strategic cooperation with China and foreign countries and donated 200million yuan

2022佛山潭洲陶瓷展召开新闻发布会 推出展会十大重点

MySQL创建表时的条件有哪些

Excuse me, which website is better for college students to check literature?

Do you really know binary tree? (Part I)

Characteristics and experimental suggestions of abbkine cell cycle Staining Kit

How to write a proposal for an English paper?
随机推荐
Worthington collagenase raw material
大型语言模型教会智能体进化,OpenAI这项研究揭示了二者的互补关系
洛谷P5440 【XR-2】奇迹 题解
洛谷P1608 路径统计 题解
ADT Spec RI AF CheckRep Safety from Rep Exposure
Build Eureka server cluster
Intelij idea efficient skills (II)
LeetCode508-出现次数最多的子树元素和-深搜
Overriding Overloading final
Enzo high sensitivity detection Arg8 vasopressin ELISA Kit
There is no sound solution to the loopback when jerryzhi launches Bluetooth [chapter]
Enzo高灵敏度检测——Arg8-Vasopressin ELISA kit
Eureka控制台访问微服务暴露的info端点
六个拿来就能用的有趣网页特效
挖财赠送的证券账户安全吗?可以开户吗?
C# AboutBox怎么显示自己定义的界面
C language array and pointer exercises (original question + analysis + original code)
棋牌类游戏
Improve four performance! D-wave releases next generation quantum annealing prototype
杰理之蓝牙发射器的搜索设备的时间修改方法【篇】