当前位置: 首页 > wzjs >正文

建站网址怎么改工程公司简介模板

建站网址怎么改,工程公司简介模板,杭州建筑公司排名,网站开发需要看什么书Spring MVC默认通过父子容器实现Web层与非Web组件的隔离。但在实际项目中,若未明确控制组件的扫描路径与加载规则,表现层的Controller、业务层的Service与数据层的Repository往往会被“一刀切”地扫描到同一上下文中。例如,业务层的Service被…

    Spring MVC默认通过父子容器实现Web层与非Web组件的隔离。但在实际项目中,若未明确控制组件的扫描路径与加载规则,表现层的Controller、业务层的Service与数据层的Repository往往会被“一刀切”地扫描到同一上下文中。例如,业务层的Service被意外注册到Spring MVC的Web上下文中,或数据源DataSource等基础设施Bean被表现层的组件直接依赖。这种混乱的加载方式不仅可能破坏分层架构的纯净性,还会导致事务管理失效、依赖注入冲突,甚至引发性能隐患。

加载控制

关键点:

在标准的 Spring MVC 应用中,存在 两个独立的上下文

上下文类型加载方式典型组件Bean 可见性
根上下文 (Root)ContextLoaderListenerService、Repository、DataSource对 Web 上下文可见
Web 上下文 (Servlet)DispatcherServletController、Interceptor、ViewResolver仅 Web 上下文内部可见
  • 父子关系:Web 上下文是根上下文的子上下文,因此 Web 上下文可以访问根上下文的 Bean,但根上下文无法访问 Web 上下文的 Bean。

  • 隔离性:若未正确分层,Web 上下文将无法获取业务层组件。

方案一:精确扫描

@Configuration
@ComponentScan("com.cc.controller")
public class SpringMvcConfig {
}

 方案二:过滤

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;@Configuration
@ComponentScan(value = "com.cc" ,     //明确扫描哪个包 value同等于basePackageexcludeFilters = @ComponentScan.Filter(    //表示排除哪些包type = FilterType.ANNOTATION,classes = Controller.class),includeFilters = @ComponentScan.Filter(    //表示精确扫描哪些包type = FilterType.ANNOTATION,classes = {Service.class, Repository.class})
)
public class SpringConfig {
}

测试:首先将spriongMvcConfig中的注解注释,仅让SpringConfig生效。写一个测试类看是否能获取UserController(在扫描SpringConfig时排除了Controller注解(见上面的代码),所以不能获取到):

import com.cc.config.SpringConfig;
import com.cc.controller.UserController;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {public static void main(String[] args) {AnnotationConfigApplicationContext a = new AnnotationConfigApplicationContext(SpringConfig.class);System.out.println(a.getBean(UserController.class));}
}

    接着回到SpringConfig,将排除的部分注释,如果能获取到则说明该方法可行:

简化开发 

    回到servlet容器,在springmvc环境和pring加载不同的配置:

public class ServletConfig extends AbstractDispatcherServletInitializer {//加载springmvc容器配置@Overrideprotected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext app = new AnnotationConfigWebApplicationContext();app.register(SpringMvcConfig.class);return app;}//设置哪些请求归属springMVC处理@Overrideprotected String[] getServletMappings() {return new String[]{"/"};  //所有请求}//加载spring容器配置@Overrideprotected WebApplicationContext createRootApplicationContext() {AnnotationConfigWebApplicationContext app = new AnnotationConfigWebApplicationContext();app.register(SpringConfig.class);return app;}
}

    该方法可以从继承AbstractDispatcherServletInitializer换继承AbstractAnnotationConfigDispatcherServletInitializer:

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
}

http://www.dtcms.com/wzjs/762254.html

相关文章:

  • 视频网站咋么做免费自己制作app手机软件
  • 北京建站公司兴田德润专业wordpress大前端5.0下载
  • 公司网站设计制作开发方案全球网站开发者大会
  • 哪里可以制作网站网站建设高职考题目
  • 怎么免费做网站不要域名网站建设需求计划
  • 南昌网站建设哪家就好外链交换平台
  • 优化网站排名推荐公司邢台网站建设最新报价
  • 企业网站建设制作店铺装修设计软件
  • 企业网站案例公司福州排名seo公司
  • 外贸网站建设服务平台姓名logo设计免费
  • 人才网站建设策划书企业邮箱如何申请注册
  • 个人网站如何做网站商城建设报告
  • 如何做微商城网站郑州制作网站价格
  • 做国际网站阿里巴巴常用网页设计软件
  • 太原网站模板安庆市建设局网站
  • 大型门户网站 代码dedecms做国外网站
  • 找网站建设企业做夏促的网站有哪些
  • 做网站一定要注册公司吗wordpress首页轮换图片入口
  • 织梦网站程序模板下载地址wordpress页面可视化编辑器
  • 可以做puzzle的网站个人网站论文结束语
  • 大连网站推广爱得科技fifa最新排名出炉
  • 怎么做网站后端迷你主机做网站服务器
  • 网站注册空间电商网站订烟平台官网
  • 网上鲜花店网站建设实施方案方太网站谁做的
  • 电商类网站开发网站搭建服务平台
  • 深圳建立网站营销网站建设做网站好吗
  • 深圳网站建设易通鼎企业网站群建设模式
  • 自己做网站可以揽业务吗北京网站设计引流微信hyhyk1
  • 武夷山建设局网站广州建网站新科网站建设
  • 适合女生做的网站网页设计的基本原则是什么