Spring bean加載控制實現(xiàn)方法
1. Controller加載控制
因為功能不同,要避免Spring錯誤的加載到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對應(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)境,加載到同一個環(huán)境中
1.2 加載Spring控制的bean的時候排除掉SpringMVC控制的bean(方式一)
名稱:@ComponentScan
類型:類注解
范例
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,需要指定類別(type)與具體項(classes)
- includeFilters:加載指定的bean,需要指定類別(type)與具體項(classes)
1.3 驗證是否排除成功
創(chuàng)建spring容器加載spring配置文件,然后根據(jù)類型獲取表現(xiàn)層的bean,如果不能獲取則證明加載Spring控制的bean的時候成功排除掉SpringMVC控制的bean;這里值得一提的是,需要把SpringMVCConfig配置類上的@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 運行結(jié)果
證明加載Spring控制的bean的時候成功排除掉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[]{"/"}; } }
簡化格式
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加載控制實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Spring bean加載控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+mysql+mybatis實現(xiàn)控制臺打印sql
在Spring Boot中使用MyBatis與MySQL,并希望在控制臺打印SQL語句,可以通過配置MyBatis的日志級別來實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解
這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10MyBatis各種類型查詢數(shù)據(jù)參數(shù)綁定的實現(xiàn)
本文主要介紹了MyBatis各種類型查詢數(shù)據(jù)參數(shù)綁定的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Java之Error與Exception的區(qū)別案例詳解
這篇文章主要介紹了Java之Error與Exception的區(qū)別案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09