Spring bean加載控制實(shí)現(xiàn)方法
1. Controller加載控制
因?yàn)楣δ懿煌?,要避免Spring錯(cuò)誤的加載到SpringMVC的bean
1.1 Controller加載控制與業(yè)務(wù)bean加載控制
SpringMVC相關(guān)bean(表現(xiàn)層bean)
Spring控制的bean
- 業(yè)務(wù)bean(Service)
- 功能bean(DataSource等)
SpringMVC相關(guān)bean加載控制
- SpringMVC加載的bean對(duì)應(yīng)的包均在com.zhang.controller包內(nèi)
Spring相關(guān)bean加載控制
- 方式一:Spring加載的bean設(shè)定掃描范圍為com.zhang,排除掉controller包內(nèi)的bean
- 方式二:Spring加載的bean設(shè)定掃描范圍為精準(zhǔn)范圍,例如service包、dao包等
- 方式三:不區(qū)分Spring與SpringMVC的環(huán)境,加載到同一個(gè)環(huán)境中
1.2 加載Spring控制的bean的時(shí)候排除掉SpringMVC控制的bean(方式一)
名稱(chēng):@ComponentScan
類(lèi)型:類(lèi)注解
范例
package com.zhang.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.stereotype.Controller; @Configuration @ComponentScan(value = "com.zhang", excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, classes = Controller.class )) public class SpringConfig { }
屬性
- excludeFilters:排除掃描路徑中加載的bean,需要指定類(lèi)別(type)與具體項(xiàng)(classes)
- includeFilters:加載指定的bean,需要指定類(lèi)別(type)與具體項(xiàng)(classes)
1.3 驗(yàn)證是否排除成功
創(chuàng)建spring容器加載spring配置文件,然后根據(jù)類(lèi)型獲取表現(xiàn)層的bean,如果不能獲取則證明加載Spring控制的bean的時(shí)候成功排除掉SpringMVC控制的bean;這里值得一提的是,需要把SpringMVCConfig配置類(lèi)上的@Configuration注釋掉;
package com.zhang; import com.zhang.config.SpringConfig; import com.zhang.controller.UserController; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class App { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserController userController = context.getBean(UserController.class); System.out.println(userController); } }
1.4 運(yùn)行結(jié)果
證明加載Spring控制的bean的時(shí)候成功排除掉SpringMVC控制的bean
2. Bean的加載格式
extends AbstractDispatcherServletInitializer
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer { protected WebApplicationContext createServletApplicationContext() { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(SpringMvcConfig.class); return ctx; } protected WebApplicationContext createRootApplicationContext() { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(SpringConfig.class); return ctx; } protected String[] getServletMappings() { return new String[]{"/"}; } }
簡(jiǎn)化格式
extends AbstractAnnotationConfigDispatcherServletInitializer
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer{ protected Class<?>[] getServletConfigClasses() { return new Class[]{SpringMvcConfig.class} }; protected String[] getServletMappings() { return new String[]{"/"}; } protected Class<?>[] getRootConfigClasses() { return new Class[]{SpringConfig.class}; } }
到此這篇關(guān)于Spring bean加載控制實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Spring bean加載控制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+mysql+mybatis實(shí)現(xiàn)控制臺(tái)打印sql
在Spring Boot中使用MyBatis與MySQL,并希望在控制臺(tái)打印SQL語(yǔ)句,可以通過(guò)配置MyBatis的日志級(jí)別來(lái)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Java實(shí)現(xiàn)五子棋游戲(控制臺(tái)版)
這篇文章主要為大家詳細(xì)介紹了Java控制臺(tái)版實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解
這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10聊一聊new對(duì)象與Spring對(duì)bean的初始化的差別
這篇文章主要介紹了聊一聊new對(duì)象與Spring對(duì)bean的初始化的差別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02MyBatis各種類(lèi)型查詢(xún)數(shù)據(jù)參數(shù)綁定的實(shí)現(xiàn)
本文主要介紹了MyBatis各種類(lèi)型查詢(xún)數(shù)據(jù)參數(shù)綁定的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Java之Error與Exception的區(qū)別案例詳解
這篇文章主要介紹了Java之Error與Exception的區(qū)別案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09