Java Spring MVC:之间的差异<;上下文:组件扫描>;及<;注释驱动/>;标签?
几天前,我开始学习这个春季Hello World教程: 在本教程中,Spring DispatcherServlet是使用Spring-servlet.xml文件配置的,该文件:Java Spring MVC:之间的差异<;上下文:组件扫描>;及<;注释驱动/>;标签?,java,spring,spring-mvc,annotations,Java,Spring,Spring Mvc,Annotations,几天前,我开始学习这个春季Hello World教程: 在本教程中,Spring DispatcherServlet是使用Spring-servlet.xml文件配置的,该文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="net.viralpatel.spring3.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
有人能帮我理解这件事吗
多谢各位
意味着您可以定义Springbeans依赖项,而无需实际在XML中指定一组元素、实现接口或扩展基类。例如,@Repository
告诉spring类是Dao,而不必扩展JpaDaoSupport
或DaoSupport的其他子类。类似地,@Controller
告诉spring,指定的类包含处理Http请求的方法,而无需实现控制器接口或扩展实现控制器的子类
当spring启动时,它读取其XML配置文件并查找
注释驱动,这向spring表明它应该扫描注释bean,而不仅仅依赖于XML bean配置。组件扫描指示在何处查找这些bean
这里有一些文档:
告诉Spring扫描这些包以查找注释
<mvc:annotation-driven>
注册RequestMappingHanderMapping、RequestMappingHandlerAdapter和ExceptionHandlerExceptionResolver,以支持MVC附带的带注释的控制器方法,如@RequestMapping、@ExceptionHandler等
这还支持支持输出的注释驱动格式以及输入的注释驱动验证的转换服务。它还支持@ResponseBody,您可以使用它返回JSON数据
您可以在@Configuration类中使用@ComponentScan(basePackages={“…”、“…”}和@EnableWebMvc,使用基于Java的配置完成相同的任务
查看3.1文档了解更多信息
与非常相似。这个答案非常有趣,但并不完全符合我的疑问,这很清楚,但我不明白为什么其他网站示例不使用注释驱动标记,而STS示例需要它……Spring并不总是有注释和组件扫描,所以您可能会看到各种各样的示例s在线展示了各种不同的技术和组合。标签还需要吗?我刚刚测试了一个Spring 3.0演示应用程序,没有标签,我的应用程序运行良好!!!!事实上,现在几乎没有任何教程放在那里Spring-servlet.xml
<annotation-driven />
package com.mycompany.maventestwebapp;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>main</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context:component-scan base-package="" />
<mvc:annotation-driven>