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

网站图片管理系统哪个行业最需要推广

网站图片管理系统,哪个行业最需要推广,四川省城乡住房与建设厅网站首页,html网站开发例子目录 一、SpringMVC、Spring的bean加载控制。 &#xff08;1&#xff09;实际开发的包结构层次。 &#xff08;2&#xff09;如何"精准"控制两个容器分别加载各自bean。(分析) <1>SpringMVC相关bean加载控制。(方法) <2>Spring相关bean加载控制。(方法) …

目录

一、SpringMVC、Spring的bean加载控制。

(1)实际开发的包结构层次。

(2)如何"精准"控制两个容器分别加载各自bean。(分析)

<1>SpringMVC相关bean加载控制。(方法)

<2>Spring相关bean加载控制。(方法)

二、Spring配置类——bean加载控制。

(1)方法一:设定精确范围。

<1>controller层。

<2>Spring配置类。

<3>SpringMVC配置类。

(2)方法二:直接扫描主包(com.xxx),再排除controller包。

<1>排除过滤器(excludeFilters)与包含过滤器(includeFilters)。

<2>设置过滤规则(type)与过滤类型(classes)。

<3>最终的Spring配置类。

三、Web容器初始化配置类加载Spring环境。

<1>方法createRootApplicationContext()。

<2>Web容器配置类实现AbstractDispatcherServletInitializer类。(bean加载格式)

<3>实现类AbstractAnnotationConfigDispatcherServletInitializer 。(更简单操作)


一、SpringMVC、Spring的bean加载控制。

(1)实际开发的包结构层次。
  • 在简单的SpringMVC入门案例中:整体项目的核心包结构只有controller层与config层。
  • SpringMVC学习(入门案例思路及实现、Web容器初始化与SpringMVC配置类)(2)-CSDN博客

  • 但实际上真正的项目没有这么简单。其项目的主要包结构如下所示:
  • config目录。包含Web容器初识化配置类Spring配置类SpringMVC配置类。(取代传统开发的XML配置文件)

  • controller目录。其内部是所有SpringMVC需要加载的bean。

  • servicedao等目录。其内部都是各种业务bean、功能bean。而这些bean都是需要让Spring加载。
  • 其中Spring需要管理的业务bean(service层)。需要管理的功能bean(第三方bean)如:DataSource(数据源对象)、SqlSessionFactoryBean等等MyBatis相关bean。


(2)如何"精准"控制两个容器分别加载各自bean。(分析)
<1>SpringMVC相关bean加载控制。(方法)
  • 让controller层的bean被SpringMVC加载控制很容易做到。——控制SpringMVC加载的bean对应包位于对应的自己项目的controller目录下即可。


<2>Spring相关bean加载控制。(方法)
  • 让Spring只加载对应的业务bean、功能bean。而避免加载到SpringMVC管理的bean。
  • 方式一:Spring加载的bean设定扫描范围为com.xxx,再排除掉controller包内的bean。
  • 方式二:Spring加载的bean设定扫描范围为精准范围。就是扫描包设定每层的精确范围:com.xxx.service包、com.xxx.dao包等。
  • 方式三:不区分Spring与springMVC的环境,加载到同一个环境中。

二、Spring配置类——bean加载控制。

(1)方法一:设定精确范围。
  • 缩小具体包对应的范围。这样就不会扫描到SpringMVC管理的bean所在controller层中。
<1>controller层。
  • ExampleController类。
package com.hyl.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;/*** 控制器类*/
//1.使用注解@Controller定义bean
@Controller
public class ExampleController {/*** 随机写一个处理请求的方法* @return 字符串(模仿json数据)*///设置当前方法操作的访问路径@RequestMapping("/save")//设置当前操作的返回值类型(如何响应给客户端)@ResponseBodypublic String save(){//方便测试查看运行结果。System.out.println("exampleController save ...");return "{'module':'springMVC'}";}}

<2>Spring配置类。
package com.hyl.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;//创建Spring的配置类
//排除加载controller包对应bean,使controller层交给SpringMVC管理@Configuration
@ComponentScan({"com.hyl.service","com.hyl.dao"})
/*@ComponentScan("com.hyl")*/
public class SpringConfig {
}

<3>SpringMVC配置类。
package com.hyl.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;//创建SpringMVC的配置类,加载controller包对应bean@Configuration
@ComponentScan("com.hyl.controller")
public class SpringMvcConfig {
}

  • 测试类。(App)
package com.hyl.test;import com.hyl.config.SpringConfig;
import com.hyl.controller.ExampleController;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {@Testpublic void test(){AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);ExampleController exampleController = context.getBean(ExampleController.class);System.out.println(exampleController);}}
  • 测试运行结果。无法获取controller层的对应bean。


(2)方法二:直接扫描主包(com.xxx),再排除controller包。
  • 按住ctrl进入注解@ComponentScan查看其内部的可用属性。
<1>排除过滤器(excludeFilters)与包含过滤器(includeFilters)。


<2>设置过滤规则(type)与过滤类型(classes)。
  • excludeFilters取值:注解@ComponentScan的Filter。


  • 属性type、classes根属地。


  • 过滤规则。分为很多个过滤策略:FilterType.xxx。(包括按注解过滤规则、用户自定义过滤规则、正则过滤规则等等)

  • 过滤类型。当过滤规则设定为:按注解进行过滤时。就需要再手动指定需要过滤的注解是哪个类型(注解:@Controller),才能完成注解的过滤扫描。


<3>最终的Spring配置类。
  • 简单说以上操作的目的:当Spring扫描整个包"com.xxx"下所有包时,需要按照注解排除扫描——注解@Controller下标明的bean。
package com.hyl.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;//创建Spring的配置类
//排除加载controller包对应bean,使controller层交给SpringMVC管理@Configuration
/*@ComponentScan({"com.hyl.service","com.hyl.dao"})*/
@ComponentScan(value = "com.hyl",excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)
)
public class SpringConfig {
}
  • 测试类。
package com.hyl.test;import com.hyl.config.SpringConfig;
import com.hyl.controller.ExampleController;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {@Testpublic void test(){AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);ExampleController exampleController = context.getBean(ExampleController.class);System.out.println(exampleController);}}
  • 测试前需要将SpringMVC的配置类的注解@Configuration注释,否则即使在spring配置类中使用了注解拦截扫描,但最终还是会因为该注解自动将bean交给Spring容器管理。



  • 注释@Configuration后,继续获取Controller层的对应bean就会报错。
  • 为了既可以拦截注解生效,又可以让SpringMVC配置类被扫描到,可以将其提到上一级目录或者上上级目录即可。(如:放置com包下,不放在com.xxx下的某个目录)

三、Web容器初始化配置类加载Spring环境。

  • 在SpringMVC的入门案例中。配置Tomcat运行的Web容器初识化启动配置类中,当时只配置了SpringMVC的环境。这次顺手将Spring的环境一起配置了。


<1>方法createRootApplicationContext()。
  • createRootApplicationContext()方法作用就是配置Spring的环境,加载Spring配置类。
  • 与加载SpringMVC配置类的操作一模一样。不一样的地方就是修改:配置类.class。

<2>Web容器配置类实现AbstractDispatcherServletInitializer类。(bean加载格式)
  • 这样当服务器启动时,不仅有SpringMVC容器,还有Spring容器
  • createServletApplicationContext()——>加SpringMVC容器。
  • createRootApplicationContext()——>Spring容器。
package com.hyl.config;import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;//定义一个Servlet容器启动的配置类,在里面加载SpringMVC的配置
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {/***加载SpringMVC配置类* @return*/@Overrideprotected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();webApplicationContext.register(SpringMvcConfig.class);return webApplicationContext;}/***加载Spring配置类(加载Spring容器)* @return*/@Overrideprotected WebApplicationContext createRootApplicationContext() {AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();webApplicationContext.register(SpringConfig.class);return webApplicationContext;}/*** 设置哪些请求归属SpringMVC处理* @return*/@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}}

<3>实现类AbstractAnnotationConfigDispatcherServletInitializer 。(更简单操作)


  • 简化后的Web容器配置类。
package com.hyl.config;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;//定义一个Servlet容器启动的配置类,在里面加载SpringMVC、Spring的配置
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {/***加载Spring配置类(加载Spring容器)* @return*/@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}/***加载SpringMVC配置类* @return*/@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
}


文章转载自:

http://4zEafZ2n.qyqmj.cn
http://5gmhdfyt.qyqmj.cn
http://bq6IWpx0.qyqmj.cn
http://B09tjEXY.qyqmj.cn
http://Jp3aC2PQ.qyqmj.cn
http://Wi3XQZlW.qyqmj.cn
http://mBLST3HJ.qyqmj.cn
http://jSbIEC5u.qyqmj.cn
http://msxQSeIc.qyqmj.cn
http://bkclhAWk.qyqmj.cn
http://XOKNKzOE.qyqmj.cn
http://GxCJvtOm.qyqmj.cn
http://UaKLnNKm.qyqmj.cn
http://H8q7kPln.qyqmj.cn
http://R3BzOJl2.qyqmj.cn
http://2etQqtNE.qyqmj.cn
http://joQaAfd7.qyqmj.cn
http://PhFJohHh.qyqmj.cn
http://czynZ1TW.qyqmj.cn
http://K0zyHyTB.qyqmj.cn
http://R4smYs4Y.qyqmj.cn
http://TXhHpsSn.qyqmj.cn
http://vCldU9Nb.qyqmj.cn
http://kIuHO2Li.qyqmj.cn
http://12HmnpRU.qyqmj.cn
http://azG9ftC3.qyqmj.cn
http://KkgyRuo5.qyqmj.cn
http://HBKwIRdI.qyqmj.cn
http://PeDiXJxq.qyqmj.cn
http://mIJ0aDi2.qyqmj.cn
http://www.dtcms.com/wzjs/730968.html

相关文章:

  • 江苏永坤建设有限公司网站大数据培训总结
  • 常州做网站建设的公司网站导航栏 字体
  • 宝塔可以做二级域名网站么营销网站制作教程
  • 淘宝官方网站登录注册如何架设网站服务器
  • 建站程序员招聘软文编辑
  • 贵 建设厅网站文件哈尔滨网站建设公司
  • 吉林网站建设哪家好wordpress后台错位
  • 建设网站网站怎样把html文件变成链接
  • 江西住房和城乡建设部网站首页青岛网站推广的价格
  • it培训机构出来的好找工作吗点击宝seo
  • 官方网站下载穿越火线wordpress会员等级插件
  • 山东工程网站建设湖南网站建设平台
  • 建设网站的费用调研wordpress怎么加友链
  • 网站网络推广方式方法沧州做网站公司
  • 网站页面模板织梦网站源码转换成wordpress
  • 网站做造价创新的南昌网站建设
  • 网站维护说明青海中小企业网站建设
  • 做网站的标准wordpress5.1友情链接
  • 网站建设怎么说服客户上海建网站制
  • 家具网站 模板wordpress网站统计插件
  • 网站建设写代码上海网站建设 找思创网络
  • 网站建设借鉴WordPress轻量企业主题
  • 网站模板英文手机跳转网站建设
  • 普洱网站建设优化网站开发中数据库的设计原则
  • 网站建设咨询公司地址鞍山seo优化
  • 贵阳网站制作系统做家居建材出口网站有哪些
  • 网站域名会赠送几个邮箱企业常用系统
  • 安徽平台网站建设费用企业网站 三合一
  • 天水做网站电话投资10元1小时赚百元
  • 快三彩票网站开发文字一键生成图片