Intorduction of Annotation ,about examples in Hello1.java
java ee 里的常用注解
.@Controller,@Service,@Repository,@Component,@RestController
这几个注解用于实例化class对象。分别对应于控制层,业务实现层,数据接口层,普通任意层及rest风格的控制层。并无任何实际意义。这些实例化的的类称为注册Bean
对于@Controller与@RestController
1
@RestController注解相当于@ResponseBody + @Controller合在一起的作用
使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容(eg:本来应该到success.jsp页面的,则其显示中文success)
如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解
2.@RequestMapping,@PostMapping,@GetMapping
@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。@PostMapping,@GetMapping为@RequestMapping的进一步封装,一般用于方法路径上。表示具体的请求方式。
对于@RequestMapping的属性值,有以下几点说明。
value:指定请求的实际地址,可以包含及其复杂的正则表达式;eg:@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
method:指定请求的method类型, GET、POST、PUT、DELETE等;
consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;eg:@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;eg:@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
params:指定request中必须包含某些参数值是,才让该方法处理。eg:@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。eg:@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
3.@Autowired,@Value,@Resource
@Autowired按照需求类型自动注入注解
@Resource默认按照名称方式进行bean匹配(java注解)
@Value读取properties文件中的配置值。eg:@Value("${key}")
4.@Configuration,@Bean
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。相当于配置文件的。也就是具有该注解的类会在spring初始化的时候进行扫描
@Bean注解标记的对象或者实例称为使用Bean。被该注解标记后,即该实例将由spring进行管理。一般与Configuration一起使用
5.@RequestBody,@RequestParam,@PathVariable,@PathParam,@RequestHeader, @CookieValue,@SessionAttributes, @ModelAttribute
请求参数获取常用注解,其中@PathParam是jboss包下面的一个实现。
6.@SpringBootApplication
@SpringBootApplication 被 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解,简化程序的配置。下面解释一下各注解的功能。
@EnableAutoConfiguration:启用 Spring 应用程序上下文的自动配置,试图猜测和配置您可能需要的bean。自动配置类通常采用基于你的 classpath 和已经定义的 beans 对象进行应用。
@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解 的类,并注册成bean,包括 @Component 下的子注解@Service、@Repository、@Controller。
@Configuration 是一个类级注释,指示对象是一个bean定义的源
7.@RefreshScope
springcloud注解,刷新配置。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1
8.@Scheduled(cron = " * * * * ?")*
spring单模块定时任务。对于多模块定时任务,请使用quartz。
9.@MapperScan
mapper注解扫描类,由spring-mybatis提供支持。
10.@RestControllerAdvice,@ControllerAdvice,@ExceptionHandler
spring前置处理器及异常处理handler
2.Hello1里面的注解
下面是hello1的源代码
/**
* Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
*
* You may not modify, use, reproduce, or distribute this software except in
* compliance with the terms of the License at:
* https://github.com/javaee/tutorial-examples/LICENSE.txt
*/
package javaeetutorial.hello1;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class Hello {
private String name;
public Hello() {
}
public String getName() {
return name;
}
public void setName(String user_name) {
this.name = user_name;
}
}
里面的@name 是命名空间的声明
@RequestScoped
spring中scope是一个非常关键的概念,简单说就是对象在spring容器(IOC容器)中的生命周期,也可以理解为对象在spring容器中的创建方式。
3)request
再次说明request,session和global session类型只实用于web程序,通常是和XmlWebApplicationContext共同使用。
<bean id ="requestPrecessor" class="...RequestPrecessor" scope="request" />
Spring容器,即XmlWebApplicationContext 会为每个HTTP请求创建一个全新的RequestPrecessor对象,当请求结束后,该对象的生命周期即告结束,如同java web中request的生命周期。当同时有10个HTTP请求进来的时候,容器会分别针对这10个请求创建10个全新的RequestPrecessor实例,且他们相互之间互不干扰,简单来讲,request可以看做prototype的一种特例,除了场景更加具体之外,语意上差不多。
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,
总结一下就是 在单一实例下 每一次请求都会产生一个新bean
Intorduction of Annotation ,about examples in Hello1.java的更多相关文章
- java EE中的hello1.java及Annotation(注解)
一.Annotation(注解) 注解(Annotation)很重要,未来的开发模式都需要注解,注解是java.lang.annotation包,Annotation是从java5引入的,它提供一些不 ...
- ANNOTATION and analyse hello1.java
一.What is annotation? annotation的中文意思就是注解,注释的意思.注解也属于一种类型.它是在 Java SE 5.0 版本中开始引入的概念.它的形式跟接口很类似,不过前面 ...
- 解释 Hello1.java
hello1.java 代码 package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped; import ...
- hello1.java内容简单介绍
双击该Hello.java文件以查看它. 在Hello类,称为管理bean类,提供了getter和setter方法name中的Facelets页面表达式中使用属性.默认情况下,表达式语言引用类名,第一 ...
- Spring框架 全注解annotation不使用配置文件(SpringConfiguration.java类代替) 补充 xml配置文件没有提示解决
全注解不使用配置文件 首先还是倒包 在原有的jar包: 需Spring压缩包中的四个核心JAR包 beans .context.core 和expression 下载地址: https://pan.b ...
- Java ee Turorial Hello1 Hello1.java解析
package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped;import javax.inject.Nam ...
- Annotation(注解)介绍
Annotation(注解)是什么: Annotation(注解) 官方的定义: An annotation is a form of metadata, that can be added t ...
- Java Annotation 机制源码分析与使用
1 Annotation 1.1 Annotation 概念及作用 1. 概念 An annotation is a form of metadata, that can be added ...
- Java Annotation Processors
Table Of Contents 1. Introduction 2. When to Use Annotation Processors 3. Annotation Processing Unde ...
随机推荐
- sp_who, sp_who2和sp_who3
sp_who可以返回如下信息: (可选参数LoginName, 或active代表活动会话数)Spid (系统进程ID)status (进程状态)loginame (用户登 ...
- 数据仓库专题18-数据建模语言IDEF(转载)
1引言 IDEF的含义是集成计算机辅助制造(Integrated Computer-AidedManufacturing,ICAM)DEFinition.最初的IDEF方法是在美国空军ICAM项目建立 ...
- MySQL中int(M)和tinyint(M)数值类型中M值的意义
在一开始接触MySQL数据库时,对于int(M)及tinyint(M)两者数值类型后面的M值理解是最多能够插入数据库中的值不能大于M: 后来工作后,也是一边学习一边使用,之后的理解是其中的M的意思是插 ...
- 把1,2,3…n*n 的数字按照顺时针螺旋的形式填入数字矩阵
从键盘输入一个整数(1~20)则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中.例如:输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 ...
- [转][html]radio 获取选中状态
方法一: if ($("#checkbox-id").get(0).checked) { // do something } 方法二: if($('#checkbox-id').i ...
- C语言强化——排序
1.完成堆排,对比堆排和qsort在排序1亿数的时间差异 #include<stdio.h> #include<time.h> #include<stdlib.h> ...
- Python3 文件的重命名
在Python3中我们要实现将本地文件homework.txt中的内容的修改操作时,大体的思路是这样的:先将homework.txt文件的内容读取到内存中,在内存中对里面的数据进行修改,接着将修改完成 ...
- MySQL 之主从同步-半同步模式配置
从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...
- sas transpose 代码备忘
OPTIONS NOCENTER LS=MAX PS=MAX; LIBNAME S '.\report';/*PROC PRINT DATA=S.doquestionr(WHERE=(sid=1972 ...
- Java动手及实验整理
1 枚举类型 在Java中,枚举类型本质上其实就是一个类,枚举中的常量都是该枚举类型的实例.枚举类型是引用类型!枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象.相同的值则引用同一个对象 ...