十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
如何使用@import導入實現(xiàn)了ImportBeanDefinitionRegistrar接口的類
成都創(chuàng)新互聯(lián)公司長期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為龍江企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),龍江網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
在程序開發(fā)的時候,我們經(jīng)常會遇見一個名詞“接口”這也是我們做開發(fā)人員工作中必不可少的一個技術(shù),接下來就和大家分享一下怎么使用@import導入實現(xiàn)了ImportBeanDefinitionRegistrar接口的類。
package com.example.demo9;
import com.example.demo9.server.MyServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.Arrays;
@SpringBootApplication
public class Demo9Application {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Demo9Application.class, args);
String[] beanNamesForType = context.getBeanNamesForType(MyServer.class);
System.out.println(Arrays.asList(beanNamesForType).toString());
context.close();
}
}
public interface MyServer {
void fun();
}
package com.example.demo9.server;
//這里最好不要加@Service,除非有其它要求
public class MyServerAImp implements MyServer{
@Override
public void fun() {
System.out.println("MyServerAImp>>>>>>>>>>>>>>");
}
}
package com.example.demo9.server;
//這里最好不要加@Service,除非有其它要求
public class MyServerBImp implements MyServer{
@Override
public void fun() {
System.out.println("MyServerBImp>>>>>>>>>>>>>>");
}
}
package com.example.demo9.registrar;
import com.example.demo9.server.MyServerAImp;
import com.example.demo9.server.MyServerBImp;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
//GenericBeanDefinition對象設(shè)置BeanDefinition
GenericBeanDefinition genericBeanDefinitionMyServerAImp=new GenericBeanDefinition();
genericBeanDefinitionMyServerAImp.setBeanClass(MyServerAImp.class);
GenericBeanDefinition genericBeanDefinitionMyServerBImp=new GenericBeanDefinition();
genericBeanDefinitionMyServerBImp.setBeanClass(MyServerBImp.class);
//注冊
registry.registerBeanDefinition("genericBeanDefinitionMyServerAImp",genericBeanDefinitionMyServerAImp);
registry.registerBeanDefinition("genericBeanDefinitionMyServerBImp",genericBeanDefinitionMyServerBImp);
}
}
package com.example.demo9.configuration;
import com.example.demo9.registrar.MyImportBeanDefinitionRegistrar;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(MyImportBeanDefinitionRegistrar.class)
public class MyConfiguration {
}