Spring 常见注解
1.常见注解
持续更新…
-
1.Bean的分类:
@Service: 注解在类上,表示这是一个业务层bean
@Controller:注解在类上,表示这是一个控制层bean
@RestController @RestController 是一个结合了 @ResponseBody 和 @Controller 的注解
@Repository: 注解在类上,表示这是一个数据访问层bean
@Component : 注解在类上,表示通用bean相当于通用的注解,当不知道一些类归到哪个层时使用,但是不建议 -
2.Bean注入:
@Autowired:按类型装配
@Resource: 按名称装配 -
3.Controller常用:
@RequestMapping 用来定义访问的URL,你可以为整个类定义一个
@RequestParam在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”) ,例如:@RequestParam(“id”) 注解
@PathVariable用于方法中的参数,表示方法参数绑定到地址URL的模板
@RequestHeader 获取请求的头部信息
@ResponseBody 该注解用于将Controller的方法返回的对象
@ModelAttribute 可用于注解和方法参数中,可以把这个@ModelAttribute特性,应用在BaseController当中
@SessionAttributes 即将值放到session作用域中,写在class上面。
@CookieValue 获取cookie信息 -
4.配置类常用:
@Configuration:注解在类上,表示这是一个IOC容器,相当于spring的配置文件,java配置的方式。 IOC容器的配置类
@Bean: 注解在方法上,声明当前方法返回一个Bean
@PostConstruct:注解在方法上,构造函数执行后执行。
@PreDestroy: 注解在方法上,在Bean销毁前执行。
@ComponentScan:注解在类上,扫描标注了@Controller等注解的类,注册为bean
@Lazy(true): 延迟初始化
@Scope:注解在类上,描述spring容器如何创建Bean实例。
@Value:注解在变量上,从配置文件中读取。
@Profile:注解在方法 类上 在不同情况下选择实例化不同的Bean 特定环境下生效
@EnableAutoConfiguration 这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring
@Profiles Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。
@ControllerAdvice 包含@Component 可以被扫描到。统一处理异常。
@ExceptionHandler 用在方法上面表示遇到这个异常就执行以下方法。
@SpringBootApplication:@SpringBootApplication=@ComponentScan+@Configuration+@EnableAutoConfiguration:约定优于配置 -
5.Servlet常用:
@WebServlet(name=“Servlet3FirstDemo”,value="/Servlet3FirstDemo") -
6.Filter常用:
@WebFilter将一个实现了javax.servlet.Filte接口的类定义为过滤器
2.自定义注解
2.1 定义Annotation
使用 @interface关键字自定义annotation
public @interface MyAnnotation {
String name(); 有一个name的成员变量
int age() default 20; 缺省值
}
2.2 提取Annotation信息
<A extends Annotation> A getAnnotation(Class<A> annotationClass);
返回该元素上存在的、指定类型的注解,如果不存在,返回null;
<A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass);
java8新增,获取直接修饰该元素,且指定类型的Annotation,如果不存在,返回null
Annotation[] getAnnotations();
返回该元素上存在的所有注解
Annotation[] getDeclaredAnnotations();
返回元素上存在的所有注解
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);
是否存在指定类型的注解,存在true,不存在false
<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass);
<A extends Annotation> A[] getDeclaredAnnotatinosByType(Class<A> annotationClass)