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

部门网站建设工作总结百度竞价排名广告定价

部门网站建设工作总结,百度竞价排名广告定价,个人网站搭建wordpress,商务网站策划 网站目标与经营模式定位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.cadmedia.cn/news/3792.html

相关文章:

  • 百度采购网官方网站出词
  • 呼市建设委员会网站每天三分钟新闻天下事
  • 网站公安备案怎么操作廊坊seo优化
  • 北京做网站建设多少钱郑州谷歌优化外包
  • 临沂集团网站建设seo第三方点击软件
  • 中软属于国企还是央企seo研究中心
  • 金坛建设银行总行网站做市场推广应该掌握什么技巧
  • 哪个兄弟来个直接看的网站谷歌play
  • 武汉网站建设 乐云seo购买网站域名
  • 网站运营内容方案网站优化网络推广seo
  • 山西做网站哪个好凡科建站官网
  • 东莞教育团购网站建设微信公众号推广网站
  • 陕西印象传媒投资集团有限公司seo薪酬如何
  • 大兴网站开发网站建设推广哪个app最挣钱
  • 营销型网站建设工资app注册推广拉人
  • 淮安住房和城乡建设厅网站济南优化网页
  • 内蒙古建设网站解释seo网站推广
  • 网站建设 广告推广百度seo引流怎么做
  • 大型网络建站公司php搭建一个简单的网站
  • 北京企业网站建设推荐win7优化大师官方网站
  • 旅游网站内容规划特点seo是指
  • 如何做网站解析怎样去推广自己的网店
  • 广州易网外贸网站建设seo快速优化方法
  • 咸宁网站建设报价最新新闻热点事件2023
  • 企业手机网站建设讯息如何自己开网站
  • 分析可口可乐网站建设的目的百度搜索引擎关键词优化
  • 宝塔自助建站系统源码深圳网络推广怎么做
  • 建设规划委员会网站注册网站在哪里注册
  • 网站建设提问宁波seo教程行业推广
  • 外包活一般是怎么接的佛山旺道seo优化