如何用Java类配置Spring MVC

 我来答
动力节点培训
2017-06-09 · TA获得超过1985个赞
知道大有可为答主
回答量:2339
采纳率:75%
帮助的人:1360万
展开全部
采用的工具主要包括:maven、myeclipse
1、使用mavan新建一个webmvc项目:
在myeclipse使用 file-》new project-》maven project-》选择webapp模板,填写项目名称,点击确认
2、新建好了项目后,按照maven项目的风格新建主要工程目录,包括src/main/java、src/main/resources、src/test/java、src/test/resources;按个人喜好和需要分配目录,以上只是一般常用的目录结构。
3、编辑pom.xml使用maven来引入项目依赖包,主要要spring核心框架依赖包:spring-core,spring-beans,springmvc需要的spring-mvc,spring-web,以及web项目需要的javax.servlet-api,还有使用spring标记需要的spring-context和spring-context-support,spring-test是测试用。关于maven的详细用法可查询相关资料。
4、我们先在src/java/main下新建一个config包,里面用来放置我们项目的配置类
5、我们先编写第一个Java cofing的配置类AppInitializer,这个类继承了 AbstractAnnotationConfigDispatcherServletInitializer,之前我们有个疑问,以往都是通过配置web.xml文件来关联spring配置的,那这里的web.xml文件里面没有配置,是怎么拉起spring的呢?原因就在于这个AppInitalizer类了,继承了AbstractAnnotationConfigDispatcherServletInitializer的AppInitalizer的作用就类似以前的spring-context.xml,并且会在web项目运行初始化被自动发现并加载,这就是java config的魅力所在了,不管在哪里声明了配置了,只要继承了AbstractAnnotationConfigDispatcherServletInitializer,它就可以被自动加载。
6、AppInitializer类需要实现三个方法,其中RootConfig和WebConfig是我们下面要新建的两个关键配置类,而getServletMappings只需要返回一个string的列表,这里的{“/”}的意思的监听访问url下所有的请求。
7、RootConfig.class的内容如下,它可以放在和AppInitializer同个目录下,主要用来配置spring的bean,这里只关注web项目的实现,所以暂时没有具体内容
8、WebConfig的内容如下,也是建议放在和AppInitializer同级目录下,用来配置DispatcherServlet。@Configuration 声明表示这个类是spring config类,@EnablcWebMvc声明来启动springMVC,@ComponentScan声明来指定java bean的扫描目录。待会再讲解这里需要配置哪些java bean
9、WebConfig类需要继承WebMvcConfigureAdapter类,并实现两个基本方法。viewResolver指定了视图所在目录,视图后缀等类型。 并通过configureDefaultServletHandling的enable()要求对静态资源的访问请求转发到servlet容器的默认servlet上。
10、然后我们现在需要新建一个控制器来控制请求的转发了。最简单的配置如下,意思是将“/homepage”的请求返回home字符串。这里虽然返回的只是一个字符串,框架会结合之前的webconfig类的配置将其解析为WEB-INF/views目录下的home.jsp文件。
11、那么到这里的我们的请求转发的基本流程就差不多结束了,最后要创建一个WEB-INF/views目录,并在其下创建home.jsp文件。
12、使用maven打包项目,并使用tomcat7来运行项目看看效果。
育知同创教育
2018-07-29 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
1.方法一:在初始化时保存ApplicationContext对象
代码:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
2.方法二:通过Spring提供的工具类获取ApplicationContext对象
代码:
import org.springframework.web.context.support.WebApplicationContextUtils;
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac1.getBean("beanId");
ac2.getBean("beanId");
说明:
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。
其中 servletContext sc 可以具体 换成 servlet.getServletContext()或者 this.getServletContext() 或者 request.getSession().getServletContext(); 另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出 WebApplicationContext 对象: WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
3.方法三:继承自抽象类ApplicationObjectSupport
说明:抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationContext。
Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入。
4.方法四:继承自抽象类WebApplicationObjectSupport
说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext
5.方法五:实现接口ApplicationContextAware
说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。
Spring初始化时,会通过该方法将ApplicationContext对象注入。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式