@PostConstruct
在bean初始化以后调用方法,能够用@PostConstruct标识该方法html
@PreDestory
在bean被销毁前调用该方法,能够用@PreDestory标识该方法web
@ModelAttribute
做用在方法参数上:将以前model中的属性赋值到参数的属性中spring
@RequestBody
将请求体中参数赋值到方法参数(对象)的属性中,用于post请求中
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,通常在异步获取数据时使用,一般是在使用 @RequestMapping 后,返回值一般解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。 express
这里须要注意的是,若是你使用了@RequestMapping
注解,而且没有用@Responsebody
,则会报404。由于返回结果被解析成跳转路径,而这条路径根本不存在。json
@RequestParam
把url?后面的参数赋值到指定名称的参数上。若是参数不写RequestParam,默认也会从url中相同参数名称获取参数值赋值到对应的变量中。好比有void test(String name),假如url为/app/tesdad?name=huangy,那么就会把huangy赋值给name参数。spring-mvc
@ResponseBody
将方法返回的结果添加到响应体中(不能使用重定向行为 ‘redirect:/xxxx’),返回类型为jsonmvc
@Component
该注解声明的类,将会添加到容器中,能够经过容器得到app
@Service
注解声明的类,将会添加到容器中,能够经过容器得到。假如在一个类上面声明@Service,这个类叫作CustomerService,那么经过ref=’customerService’就能够得到这个bean异步
@Resource
bean的注入,@Resource按照名称(byName)注入post
@Autowire
bean的注入,@Autowire按照类型注入
补充:
@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了(这里name指的是bean的id)。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的id,而type属性则解析为bean的类型。因此若是使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。若是既不指定name也不指定type属性,这时将经过反射机制使用byName自动注入策略。 @Resource装配顺序 1. 若是同时指定了name和type,则从Spring上下文中找到惟一匹配的bean进行装配,找不到则抛出异常 2. 若是指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常 3. 若是指定了type,则从上下文中找到类型匹配的惟一bean进行装配,找不到或者找到多个,都会抛出异常 4. 若是既没有指定name,又没有指定type,则自动按照byName方式进行装配;若是没有匹配,则则按照类型进行匹配,若是匹配则自动装配;
@Controller
定义一个控制器类的bean
@RestController
一、一样定义一个控制器类,多了一些特征
二、每个@RequestMapping上默认添加了@ResponseBody
三、支持Rest客户端异步无阻塞
@RequestMapping
一、@RequestMapping映射url到控制器类或者方法上。当@RequestMapping标记在类上面时,方法中@RequestMapping的请求地址都是相对类上的@RequestMapping的请求地址而言的;当Controller上没有@RequestMapping标记,方法上的@RequestMapping都是绝对路径。
二、URI模板:
a、如今有URI模板/test/{variable},假如请求URL为/test/hello,该URL跟模板相匹配,就把{variable}替换成hello b、@PathVariable:标记一个方法参数,该参数的值将使用URI模板中对应的变量的值来赋值
三、属性:
a、produces : 能够指定返回内容的类型(如application/json),也能够指定返回内容的编码(如charset=UTF-8) b、consumes : 能够指定提交数据的类型 c、value : 指定url d、method : 指定HTTP请求方法(如RequestMethod.POST)
@interface
定义一个注解: @interface Name {}
@Rentention
该注解的保留级别(该注解在何时是可见的)
@Target
设定注解的使用范围
@Inherited
该若是一个注解被用在A类上,B类继承A类,B类自动继承父类的这个注解
@Value
@Value能够读取配置文件属性的值(包括配置中心的文件) ``` @Value("${dubbo.application.name}") private String applicationName; ```
@ExceptionHandler
定义了这个注解的方法,当前类的异常都会被这个方法捕获 详细见: https://www.cnblogs.com/shuimuzhushui/p/6791600.html
一、使用@Controller注解,必须添加配置:
`<!-- 启用对类包进行扫描以及Bean定义的功能,同时启用自动注入功能 --> <context:component-scan base-package="com.mall.web"/> <!-- component-scan有一个属性须要注意,就是use-default-filters。 了解 use-default-filters 这个属性的做用。use-default-filters 属性的默认值为 true,即便用默认的 Filter 进行包扫描(值为true),会对标有 @Service,@Controller和@Repository 的注解的类进行扫描。 若是use-default-filters值为false,会只扫描给定注解的类,好比说以下配置: <context:component-scan base-package="com" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> 该配置只会扫描com包下面,注解为Controller的类 --> <!-- 处理@Controller的使用前置配置 --> <mvc:annotation-driven/>`
二、加载spring配置文件的方式:
<!-- spring MVC的核心就是DispatcherServlet,使用springMVC的第一步就是将下面的servlet放入web.xml servlet-name属性很是重要,默认状况下,DispatchServlet会加载这个名字-servlet.xml的文件,以下,就会加载 dispather-servlet.xml,也是在WEN-INF目录下。 --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- 设置dispatchservlet的匹配模式,经过把dispatchservlet映射到/,默认servlet会处理全部的请求,包括静态资源 --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>