Spring 常用注解解释

A

@Autowired
	可以自动帮把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
	注释进行自动注入时,spring容器中匹配的候选Bean数目必须有且仅有一个。
	否则将抛出BeanCreationException异常
	默认先按byType进行匹配,如果发现找到多个bean,
	则又按照byName方式进行匹配,如果还有多个,则报出异常。

B

@Bean
	用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。
	产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。
	SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,

 

C

@Controller
	是Spring框架提供的注解。@Controller标识的类,该类代表控制器类(控制层/表现层)。
	控制层里面的每个方法,都可以去调用@Service标识的类
	@Service标识的类中的方法可以继续调用@Resposity标识的接口实现类(Dao层/持久层)。
@configuration
	用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,
	使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。
	这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,
	并用于构建bean定义,初始化Spring容器。
@ControllerAdvice
	这是一个增强的 Controller,可以实现:
		1. 全局异常处理
			在@ControllerAdvice类中,可以定义多个方法,不同的方法处理不同的异常
		2. 全局数据绑定
			全局数据绑定功能可以用来做一些初始化的数据操作,可以将一些公共的数据定义在添加了 @ControllerAdvice 注解的类中,
			这样,在每一个 Controller 的接口中,就都能够访问到这些数据。
		3. 全局数据预处理
@Column
	JPA中声明属性与数据库字段的映射关系。
@ComponentScan
	标注哪些注解标识的类 会被spring自动扫描并且装入bean容器。
	basePackages标识需要扫描的包
	excludeFilters 属性表示排除规则, 
	可以写多个 @Filter 来排除, 上面的代码表示 排除 Controller 注解的类

 

D

E

@ExceptionHandler
	使用@ExceptionHandler注解时,需要定义一个异常的处理方法
	给这个方法加上@ExceptionHandler注解,
	这个方法就会处理类中其他方法(被@RequestMapping注解)抛出的异常。
	注解中可以添加参数,参数是某个异常类的class,代表这个方法专门处理该类异常
@Entity
	JPA中对实体注释。
@EnableAutoConfiguration
	根据添加的jar依赖猜测如何配置Spring,形成自动配置

 

F

G

@GeneratedValue
	为一个实体生成一个唯一标识的主键
	@GeneratedValue注解有两个属性,分别是strategy和generator,
	strategy属性:提供四种值:
		-AUTO	
			主键由程序控制, 是默认选项 ,不设置就是这个
		-IDENTITY 
			主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
		-SEQUENCE 
			通过数据库的序列产生主键, MYSQL  不支持
		-Table 
			提供特定的数据库产生主键, 该方式更有利于数据库的移植

 

H

I

@Id
	JPA中声明此属性为主键。该属性值可以通过应该自身创建


J

K

L

M

@ModelAttribute
	1. 应用在方法上
		被@ModelAttribute注解的方法会在Controller每个方法执行之前都执行
	2. 应用在参数上
		使用@ModelAttribute注解的参数,意思是从前面的Model中提取对应名称的属性。

 

N

O

@Override
	伪代码,表示重写
	编译器可以给验证@Override下面的方法名是否是父类中所有的,如果没有则报错。

 

P

@PathVariable
	通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:
	URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中;
	@PathVariable 是从一个URI模板里面取值来填充
@PathParam
	这个注解是和spring的pathVariable是一样的,
	可以将 URL 中占位符参数绑定到控制器处理方法的入参中,也是基于模板的,
	但是这个是jboss包下面的一个实现,上面的是spring的一个实现,都要导包
@Profile
	1.	在任何直接或间接使用@Component和@Configuration的类上作为一个类型注解使用
	2.	作为元注解,用于组成自定义构造型注解
	3.	作为任何@Bean方法的方法级注解

 

Q

R

@RequestParam
	把请求中的指定名称的参数传递给控制器中的形参赋值
	@RequestParam 是从request里面拿取值
	属性:
		1. value / name:请求参数中的名称 (必写参数)
		2. required:请求参数中是否必须提供此参数,默认值是true,true为必须提供
		3. defaultValue:默认值
@ResponseBody
	注解 @ResponseBody,使用在控制层(controller)的方法上
	将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。
	当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
        如果返回值是字符串,那么直接将字符串写到客户端;
	如果是一个对象,会将对象转化为json串,然后写到客户端。
@RestController
	Spring框架提供的注解。@RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用。
	Controller类中的方法返回值,默认是json对象,也就是相当于@Controller里面的方法上添加了@ResponseBody
	如果方法返回值,需要跳转,那么方法的返回类型必须是View 或者ModelAndView.
@RequestMapping
	将请求URL映射到整个类上或某个特定的方法上
	一个requestMapping可以映射单个或多个URL
	路径开头是否加斜杠/均可,建议加上
	Ant 风格的 URL 映射:
		通配符 ?	匹配任何单字符
		通配符 * 	匹配任意数量的字符(含 0 个)
		通配符 **	匹配任意数量的目录(含 0 个)
	占位符URL 映射:
		URL 中可以通过一个或多个 {} 占位符映射
		例如:@RequestMapping("/user/{userId}/show")
		可以通过@PathVariable("") 注解将占位符中的值绑定到方法参数上
@ResponseStatus
	1. 标注在@RequestMapping方法上.
		改变服务器响应的状态码
	2. 标注在@ControllerAdvice中.
	3. 自定义类型的异常添加注解@ResponseStatus
@Repository
	用在持久层的接口上,这个注解是将接口的一个实现类交给spring管理。
@Resource
	@Resource默认按byName自动注入。
	既不指定name属性,也不指定type属性,则自动按byName方式进行查找。
	如果没有找到符合的bean,则回退为一个原始类型进行进行查找,如果找到就注入。
	只是指定了@Resource注解的name,则按name后的名字去bean元素里查找有与之相等的name属性的bean。
	只指定@Resource注解的type属性,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常。

 

S

@SpringBootApplication
	@SpringBootApplication = 
		(默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。
@ServletComponentScan
	SpringBootApplication 上使用@ServletComponentScan 注解后
	Servlet可以直接通过@WebServlet注解自动注册
	Filter可以直接通过@WebFilter注解自动注册
	Listener可以直接通过@WebListener 注解自动注册
@Service
	服务层组件,用于标注业务层组件,表示定义一个bean,
	自动根据bean的类名实例化一个首写字母为小写的bean,
@SessionAttributes
	在多个请求之间共用数据,则可以在控制器类上标注一个 @SessionAttributes,
	配置需要在session中存放的数据范围,
	将存放在model中对应的数据暂存到HttpSession 中。
	注意:
		1. 只能使用在类定义上。
		2. 可以通过属性名指定需要放到会话中的属性外
		3. 可以通过模型属性的对象类型指定哪些模型属性需要放到会话中

 

T

@Test
	该方法可以不用main方法调用就可以测试出运行结果,是一种测试方法
	一般函数都需要有main方法调用才能执行,注意被测试的方法必须是public修饰的 
	还可以指定将会抛出的异常类型,如果没有抛出异常或者抛出的一场不属于指定的类型,就会算是测试失败了。

 

U

V

@Value
	该注解作用的作用是将我们配置文件的属性读出来,有@Value("${}")和@Value("#{}")两种方式
	@Value("${}"):
		在使用Springboot项目搭建的项目时,
		配置文件application.properties中已经被加载到了项目中,
		在项目中可以通过该注解获取配置文件中的信息
	@Value("#{}"):
		SpEL表达式
		通常用来获取bean的属性,或者调用bean的某个方法。
		当然还有可以表示常量

 

W

@WebFilter
	 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,
	 容器将根据具体的属性配置将相应的类部署为过滤器。
	 所有属性中 value、urlPatterns、servletNames 三者必需至少包含一个,
	 其他为可选属性,且 value 和 urlPatterns 不能共存,
	 如果同时指定,通常忽略 value 的取值
@WebListener
	对于使用注解的监听器就是在监听器类上使用@WebListener进行标注
	这样Web容器就会把它当做一个监听器进行注册和使用了
	监听器类应该实现下面接口之一:
		对Request的监听:
			ServletRequestListener:
				可见监听Request的创建和销毁
			ServletRequestAttributeListener:
				可以对Request的属性进行监听。
		对Session的监听:
			HttpSessionListener:
				可以监听HttpSession的创建跟销毁
			HttpSessionAttributeListener:
				对session中属性的监听
		对ServletContext的监听:
			ServletContextListener:
				可以监听到ServletContext的创建和销毁
			ServletContextAttributeListener:
				可以监听到ServletContext中属性变化
@WebServlet
	用于标注在一个继承了HttpServlet类之上,属于类级别的注解
	该注解的作用等价于 在web.xml中配置的该servlet的元素中的配置
	属性:
		loadOnStartup属性:
			标记容器是否在启动应用时就加载Servlet,
			默认不配置或数值为负数时表示客户端第一次请求Servlet时再加载;
			0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;
		name属性:
			可以指定也可以不指定,通过getServletName()可以获取到,
			若不指定,则为Servlet的完整类名
		urlPatterns/value属性: 
			String[]类型,可以配置多个映射,
			如:urlPatterns={"/user/test", "/user/example"}
		urlPatterns的常用规则:
			/*或者/:拦截所
			*.do:拦截指定后缀
			/user/test:拦截路径
			/user/*.do、/*.do、test*.do都是非法的,启动时候会报错

 

X

Y

Z

你可能感兴趣的:(spring系列)