国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

基于spring三方包類注入容器的四種方式小結

瀏覽:8日期:2023-08-11 17:32:40

如果引用第三方jar包,肯定是不能直接使用常用注解@Controller、@Service、@Repository、@Component將類的實例注入到spring容器中。以下四種方法可以向spring容器中導入三方包中類實例 。

1 xml配置

這種情況大家用的比較多,就是在spring的xml文件中配置需要導入的bean。在springweb項目工程web.xml中 ContextLoaderListener或者DispatcherServlet的初始參數(shù)contextConfigLocation指定spring配置文件位置,可以在該配置文件中直接定義bean,或者在該配置文件中import專門配置三方bean的xml文件。springboot工程,可以在啟動類上面加注解@ImportResource。@ImportResource注解可以通過value指定需要掃描的xml文件,value是字符串數(shù)組可以指定多個xml配置文件。

@SpringBootApplication@ImportResource(value = {'classpath:spring-bean.xml'})public class DubboOneApplication { public static void main(String[] args) { SpringApplication.run(DubboOneApplication.class, args); }}

2 @Configuration和@Bean

可以通過直接直接向spring容器注入bean。在開啟注解掃描的情況下,在掃描的包路徑中添加具有@Configuration注解的類,在該類的定義返回某個實例的方法,這個方法加上@Bean的注解,那么這個方法的返回值將注入spring容器,這個bean的名稱是這個方法的名稱。

3 @Import

@Import可以直接向容器中導入第三方包中bean。在開啟注解掃描的情況下,可以在有@Controller,@Service,@Component,@Repository,@Configuration注解的類上面添加@Import注解,@Import注解有一個類數(shù)組類型的屬性,類數(shù)組中的類有以下四種情況

普通的類名稱,該類被注入容器,bean名稱是全類名

@SpringBootApplication@Import({TestTwo.class})public class DubboOneApplication { public static void main(String[] args) { SpringApplication.run(DubboOneApplication.class, args); }}

具有Configuration作用的類,沒有@Configuration注解,里面定義了具有@Bean注解的方法,例如上面TestTwo中有一個返回TestThree的方法使用了@Bean注解,那么TestThree也會注入進容器,bean名稱就是方法名,和@Configuration注入功能類似。

ImportSelector實現(xiàn)類,該接口具有一個方法,方法的返回值是字符串數(shù)組,每一項是全類名,通過參數(shù)AnnotationMetadata可以得到這個被@Import注解修飾類的信息。同樣這樣注入進來的bean的名稱也是全類名,可以返回空數(shù)組,不可以返回null。第一種直接寫注入類名和使用ImportSelector實現(xiàn)類,都沒有辦法使用注入類的有參構造方法,bean的名稱也沒有辦法指定,不過只單實例自動注入,不用關心bean名稱。

public interface ImportSelector { /** * Select and return the names of which class(es) should be imported based on * the {@link AnnotationMetadata} of the importing @{@link Configuration} class. */ String[] selectImports(AnnotationMetadata importingClassMetadata); }

ImportBeanDefinitionRegistrar實現(xiàn)類,該類有個方法可以直接向Application中手動注入bean,我們可以簡單定義一個bean然后注入。

@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { RootBeanDefinition definition = new RootBeanDefinition(TestFive.class); registry.registerBeanDefinition('testTive',definition); }

4 @FactoryBean

FactoryBean可以用來實現(xiàn)代理,原始的代理實現(xiàn)就可以使用ProxyFactoryBean,還有專門用來實現(xiàn)事務代理的TransactionProxyFactoryBean。使用注解和配置的方式和一般bean一樣向容器中注入一個FactoryBean的實現(xiàn)類,實際注入的該FactoryBean中getObject方法返回的對象,這個bean的名稱還是對應配置或注解中指定的名稱。

@Component('testFive')public class TestFour implements FactoryBean<TestFive>{ @Override public boolean isSingleton() { return true; } @Override public TestFive getObject() throws Exception { return new TestFive(); } @Override public Class<?> getObjectType() { return TestFive.class; }}

補充知識:Spring Boot @Import注解(將指定類實例注入到IOC容器中)

[color=red][size=large][b]SpringBoot 的 @Import 用于將指定的類實例注入到Spring IOC Container中。[/b][/size][/color] SpringBoot 提供了 三種使用 @Import 將 類實例注入至 Spring IOC Container中 的實例。

1.直接注入

2.實現(xiàn) ImportBeanDefinitionRegistrar 接口 注入

3.實現(xiàn) ImportSelector 注入

[color=red][b]直接注入

[/b][/color]

Broker.java(無任何屬性和實現(xiàn))

package com.springBoot.entrance.importBean.direct;public class Broker {}

Customer.java(無任何屬性和實現(xiàn))

package com.springBoot.entrance.importBean.direct;public class Customer {}

ImportDirect.java

package com.springBoot.entrance.importBean.direct;import org.springframework.context.annotation.Import;import org.springframework.stereotype.Component;@Component@Import({Customer.class,Broker.class})/** *使用Import 將指定的類的實例注入至Spring 容器中 */public class ImportDirect {}

[b][color=red]代碼解讀:使用 @Import({Customer.class,Broker.class}) 后 Customer 和 Broker類的實例將會被注入之Spring IOC Container中[/color][/b]

App.java

//import Direct 使用import 直接將指定的類實例注入至Spring 容器中System.out.println(context.getBean(ImportDirect.class));System.out.println(context.getBean(Customer.class));System.out.println(context.getBean(Broker.class));

以上這篇基于spring三方包類注入容器的四種方式小結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 一个人看的日本免费视频 | 2021最新国产精品一区 | 爱啪网亚洲第一福利网站 | 久久九 | 人成午夜性刺激免费 | 美女毛片在线看 | 亚洲精品久久久久中文 | 日韩欧美国产视频 | 亚洲 欧美 日韩中文字幕一区二区 | 暖暖免费高清日本一区二区三区 | 午夜精品亚洲 | 国产精品欧美亚洲日本综合 | 日本一线a视频免费观看 | www.久久| 欧美 自拍 | a级毛片无码免费真人 | 扒开双腿猛进入爽爽在线观看 | 99视频在线播放 | 亚洲男人天堂 | 国产3级在线观看 | 三级精品 | 九九re6精品视频在线观看 | 精品久久久久久久 | 精品一区二区三区在线播放 | 久久99国产亚洲高清观看首页 | 毛片a片免费观看 | 中文字幕福利视频 | 美女张开腿让男人 | 欧美成人福利 | 午夜影院黄 | 国产在线一区二区三区 | 亚洲男人天堂视频 | 一级做a毛片免费视频 | 欧美高清videossex19 | 久久是精品| jizz国产精品免费麻豆 | 亚洲最大网址 | 国产v综合v亚洲欧美大另类 | 成人a免费α片在线视频网站 | 精品日韩一区二区三区视频 | 久久久久亚洲香蕉网 |