使用注解前需要开启自动扫描功能,其中base-package为需要扫描的包(含子包)。
1声明Bean注解
1 | @Component |
注解在类上,可以作用在任何层次。 | 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 是一个泛化的概念,仅仅表示一个组件 (Bean) ,将一个实体类,放入bean中。 |
2 | @ Service |
注解在类上 | 用于标注业务层组件 |
3 | @ Controller |
注解在类上 | 用于标注控制层组件(如struts中的action) |
4 | @ Repository |
注解在类上 | 用于标注数据访问组件,即DAO组件。 |
2注入Bean注解
1 | @Autowired |
可以对成员变量、方法、构造函数、类,进行注释。默认按类型装配
|
注解在set方法上或属性上 如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。 如:@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用 |
2 | @Resource |
默认按名称装配,当找不到与名称匹配的bean才会按类型装配。 | |
3 | @Inject |
JSR-330提供的注解 |
3Java配置
1 | @Configuration |
注解在类上 |
声明当前类是一个配置类,相当于一个Spring配置的xml文件。把一个类作为一个IoC容器 和@Bean搭配使用,某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。 |
2 | @Bean |
注解在方法上 |
声明当前方法的返回值为一个Bean。 |
3 | @ComponentScan |
注解在类上 |
自动什么包名下所有使用@Service、@Compent、@Repository、@Controller的类,并注册为Bean。 |
4 | @Lazy(true) |
表示延迟初始化 | |
5 | @Primary |
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常 |
3AOP
1 | @Aspect |
注解在类上 | 声明是一个切面。 |
2 | @After |
注解在方法上 | 声明建言 |
3 | @Before |
注解在方法上 | 声明建言 |
4 | @Around |
注解在方法上 | 声明建言 |
5 | @PointCut |
注解在方法上 | 定义拦截规则,声明切点。 |
@After、@Before、@Around参数拦截规则为切点(PointCut),为了使切点复用,可使用@PointCut专门定义拦截规则,然后在@After、@Before、@Around
4常用配置
4.1Bean的Scope
1 | @Scope |
注解在类上 | 用于指定scope作用域的 描述的是Spring容器如何新建Bean的实例的。实例:Scope("Prototype")
|
4.2Spring EL 和 资源调用
1 | @Value |
注解在变量上 | 调用资源(普通文件,网址,配置文件,系统环境变量等) |
2 | @PropertySource |
注解在类上 | 注入配置文件是来指定文件地址。 |
4.3Bean的初始化和销毁
1 | @Bean |
注解在方法上 | @Bean(initMethod="init",destroyMethod="destory") 在构造函数执行后执行,在Bean销毁之前执行。 |
2 | @PostConstruct |
注解在方法上 | 在构造函数执行后执行 |
3 | @PreDestroy |
注解在方法上 | 在Bean销毁之前执行 |
4 | @DependsOn |
注解在方法上 | 定义Bean初始化及销毁时的顺序 |
4.4Profile
1 | @Profile |
注解在类、方法上 | 在不同情况下选择实例化不同的Bean。 |
4.5事务
4.6多线程
1 | @EnableAsync |
注解在配置类上 | 开启对异步任务的支持 |
2 | @Async |
在实际执行的Bean的方法中 | 声明这是一个异步任务 |
4.7计划任务(定时任务)
1 | @EnableScheduling |
注解在配置类上 | 开启对j计划任务(定时任务)的支持 | |||||||||
2 | @Scheduled |
在实际执行的方法上 | 在要执行计划任务的方法上通过@Scheduled 声明这是一个计划任务。 包含:cron 、fixDelay、fixRate等类型
|
4.8条件注解
1 | @Conditional |
用在配置类中 | 根据满足某一个特定条件创建一个特定的Bean。(Spring4提供) |
4.9元注解
元注解:用来注解别的注解的注解。
组合注解:被注解的注解。
组合注解具备注解其上的元注解的功能。
@WiselyConfiguration=@Configuration+@CompontScan
5.0 @Enable*注解
1 | @EnableAspectJAutoProxy |
作用在配置类上 | 开启对AspectJ自动代理的支持。 |
2 | @EnableAsync |
注解在配置类上 | 开启对异步任务的支持 |
3 | @EnableScheduling |
注解在配置类上 | 开启对j计划任务(定时任务)的支持 |
4 | @EnableWebMvc |
开启web mvc的配置支持 | |
5 | @EnbaleConfigurationProperties |
开启对@ConfigurationProperties注解配置Bean的支持。 | |
6 | @EnableJpaRepositories |
开启对Spring Data JPA Repository的支持 | |
7 | @EnableTransactionManagement |
开启注解式事务的支持 | |
8 | @EnableCaching |
开启注解式的缓存支持 |
Spring4.2新特性:
@Order:调整配置类加载顺序。
SpringMVC注解:
1 | @Controller |
作用在类上 | 表面这个类是SpringMVC里面的Controller,将其声明为Spring的一个Bean,Dispatcher Servlet会自动扫描注解了此注解的类,并将Web请求映射到@RequestMappin的方法上。 注意: 在声明普通Bean的时候,使用@Service,@Component,@Repository,@Controller是等同的,因为@Service,@Repository,@Controller都组合了@Component。 但是在SpringMVC声明控制器Bean的时候,只能使用@Controller |
2 | @RequestMapping |
类,方法上 | 用来映射Web请求(访问路径和参数)、处理类和方法的。 注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servlet的request和reponse作为参数,也支持对request和response的媒体类型进行配置。 @RequestMapping 既可以作用在类级别,也可以作用在方法级别。当它定义在类级别时,标明该控制器处理所有的请求都被映射到 /favsoft 路径下。 @RequestMapping中可以使用 method 属性标记其所接受的方法类型,如果不指定方法类型的话,可以使用 HTTP GET/POST 方法请求数据,但是一旦指定方法类型,就只能使用该类型获取数据。 @RequestMapping 可以使用 @Validated与BindingResult联合验证输入的参数,在验证通过和失败的情况下,分别返回不同的视图。 @RequestMapping支持使用URI模板访问URL。URI模板像是URL模样的字符串,由一个或多个变量名字组成,当这些变量有值的时候,它就变成了URI。 |
3 | @ResponseBody |
类,返回值前,方法上 | @ResponseBody:它的作用是将返回类型直接输入到HTTP response body中。 @ResponseBody:输出JSON格式的数据 |
4 | @RequestBody |
参数前 | request的参数在请求体内 如果觉得@RequestBody不如@RequestParam趁手,我们可以使用HttpMessageConverter将request的body转移到方法参数上,HttMessageConverser将HTTP请求消息在Object 对象之间互相转换,但一般情况下不会这么做。事实证明,@RequestBody在构建REST架构时,比@RequestParam有着更大的优势。 |
5 | @PathVariable |
参数前 | 接收路径参数。 在Spring MVC中,可以使用 @PathVariable 注解方法参数并将其绑定到URI模板变量的值上。 @PathVariable 可以有多个注解 @PathVariable中的参数可以是任意的简单类型,如int, long, Date等等。Spring会自动将其转换成合适的类型或者抛出 TypeMismatchException异常。当然,我们也可以注册支持额外的数据类型。 如果@PathVariable使用Map @PathVariable支持使用正则表达式,这就决定了它的超强大属性,它能在路径模板中使用占位符,可以设定特定的前缀匹配,后缀匹配等自定义格式。 @PathVariable还支持矩阵变量 |
6 | @RestController |
类 | 组合注解 =@Controller+@ResponseBody 我们经常见到一些控制器实现了REST的API,只为服务于JSON,XML或其它自定义的类型内容。 @RestController就是这样一种类型,它避免了你重复的写@RequestMapping与@ResponseBody。 @RestController用来创建REST类型的控制器。 |
7 | @EnableWebMvc |
类 | 开启对SpringMVC的配置支持,可以重写这个类的方法,配置拦截器,配置静态资源映射 |
8 | @ControllerAdvice |
类 | 1.将对于控制器的全局配置放在同一个位置 2.注解了@Controller的类的方法可以使用@ExceptionHandler,@InitBinder,@ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。 |
@ExceptionHandler |
用于全局处理控制器里的异常。 |
||
@InitBinder |
用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。 |
||
@ModelAttribute |
本来的作用是绑定键值对到Model里,此处是让全局的@RequestMapping都能获得在此处设置的键值对。 |
||
9 | @RequestParam |
参数中 | @RequestParam将请求的参数绑定到方法中的参数上,如下面的代码所示。 其实,即使不配置该参数,注解也会默认使用该参数。如果想自定义指定参数的话,如果将@RequestParam的 required 属性设置为false(@RequestParam(value="id",required=false))。 |
10 | @ModelAttribute |
方法或方法参数上 | 当它作用在方法上时,标明该方法的目的是添加一个或多个模型属性(model attributes)。该方法支持与@RequestMapping一样的参数类型,但并不能直接映射成请求。控制器中的@ModelAttribute方法会在@RequestMapping方法调用之前而调用,示例如下 @ModelAttribute方法用来在model中填充属性,如填充下拉列表、宠物类型或检索一个命令对象比如账户(用来在HTML表单上呈现数据)。 @ModelAttribute方法有两种风格:一种是添加隐形属性并返回它。另一种是该方法接受一个模型并添加任意数量的模型属性。用户可以根据自己的需要选择对应的风格。
当@ModelAttribute作用在方法参数上时,表明该参数可以在方法模型中检索到。如果该参数不在当前模型中,该参数先被实例化然后添加到模型中。一旦模型中有了该参数,该参数的字段应该填充所有请求参数匹配的名称中。这是Spring MVC中重要的数据绑定机制,它省去了单独解析每个表单字段的时间。 @ModelAttribute是一种很常见的从数据库中检索属性的方法,它通过@SessionAttributes使用request请求存储。在一些情况下,可以很方便的通过URI模板变量和类型转换器检索属性。
|
11 | @HttpEntity |
HttpEntity除了能获得request请求和response响应之外,它还能访问请求和响应头,如下所示:
|
springboot注解:
1 | @ComponentScan(basePackages = "com.xzc.") |
|
2 | @SpringBootApplication |
SpringBoot的核心注解,主要作用是开启自动配置。 @SpringBootApplication=@ComponentScan+@Configuration+@EnableAutoConfiguration 关闭特定的自动配置:@SpringBootApplication注解的exclude参数。 例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class} ) |
3 | @ImportResource("classpath:ws-client.xml") |
加载xml配置。 |
4 | @EnableRedisHttpSession |
|
5 | @Entity |
注释指明这是一个实体Bean |
Lombok:简化java代码注解
1 | @Data |
注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法 |
2 | @Setter |
注解在属性上;为属性提供 setting 方法 |
3 | @Getter |
注解在属性上;为属性提供 getting 方法 |
4 | @NoArgsConstructor |
注解在类上;为类提供一个无参的构造方法 |
5 | @AllArgsConstructor |
注解在类上,为类提供一个全参的构造方法 |
6 | @Log4j |
注解在类上;为类提供一个 属性名为log 的 log4j 日志对象 |
----JSR-250----
1 | @PostConstruct |
用于指定初始化方法(用在方法上) |
2 | @PreDestory |
用于指定销毁方法(用在方法上) |
3 | @Resource |
默认按名称装配,当找不到与名称匹配的bean才会按类型装配。 |
----------