Spring Boot注解

来源:互联网 发布:pe windows启动修复 编辑:程序博客网 时间:2024/06/08 18:51
在Spring Boot中几乎可以完全弃用xml配置文件,在这里总结下常用的注解。

Spring最开始是为了解决EJB等大型企业框架对应用程序的侵入性
因此大量依靠配置文件来“非侵入式”得给POJO增加功能
从Spring 3.x开始,Spring被外界最为诟病的一点就是配置繁多,号称“配置地狱”

从Spring 4.x开始,Spring.io提供了三种方式编织Bean:

  • 利用注解:隐式配置,例如:@Autowired、@Bean、@Component等,通过注解来简化xml文件。
  • 利用Java文件:显示配置,比xml配置的优势是具备类型安全
  • 利用传统的xml配置文件

注解(annotations)列表

@ResponseBody

用该注解修饰的函数,会将结果直接填充到HTTP的响应体中,一般用于构建RESTful的api;

@Controller

用于定义控制器类,在spring 项目中由 控制器  负责   将用户发来的URL请求    转发到    对应的服务接口(service层)

一般情况下@Controller与  @RequestMapping 一起使用,用于指定    URL对应的处理方法或者处理类

@Controllerpublic class Index {    @RequestMapping(value ="/", method = RequestMethod.GET)    @ResponseBody    public String hello(){        return "hello world";    }}
@Runwith:

@RestController

与Controller类似,使用这个注解表明是REST接口

@ResponseBody

@RequestMapping

提供路由信息,负责 URL到Controller中的具体函数的映射。

@EnableAutoConfiguration

Spring Boot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。

@ComponentScan

表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。

@Configuration

相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

@SpringBootApplication

相当于@EnableAutoConfiguration、@ComponentScan和@Configuration的合集。

@Import

用来导入其他配置类。

@ImportResource

用来加载xml配置文件。

@Autowired

自动导入依赖的bean

@Service

一般用于修饰service层的组件

@Repository

使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
@value注解来读取application.properties里面的配置


@ControllerAdvice:包含@Component。可以被扫描到。统一处理异常


@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。

@PathVariable:路径变量。

@RequestParam用在方法的参数前面。

@AutoWired  byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,
就算找不到bean也不报错。

@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。一般公共的方法会用上这个

@ResponseBody表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,
在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

@Profiles   Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。               任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。

@RestController和@RequestMapping注解  :
4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解。4.0之前的版本,spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController。
当你实现一个RESTful web services的时候,response将一直通过response body发送。为了简化开发,Spring 4.0提供了一个专门版本的controller。下面我们来看看@RestController实   现的定义:
         @RequestMapping 注解提供路由信息。它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到 home                方法。
         @RestCollentror 注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。
         @RestController 和 @RequestMapping 注解是Spring MVC注解(它们不是Spring Boot的特定部分)

REST服务:
     REST是一套用来创建Web Service的方法。
       REST式的Web Service的主旨是让事情尽量的简单化。
  REST式的Web Service使用HTTP里的方法:GET, POST, DELETE, PUT。你不需要使用URL或请求的内容来指定这个方法。
  REST式的Web Service使用HTTP状态码作为返回值。
  REST式的Web Service调用产生的HTTP请求内容只是用于服务数据不是用来指明调用方法,目标对象或返回值的。
  使用REST方法来开发Web Service的关键点是利用HTTP协议的简单性,而不是去扩展这个协议。你的Web Service调用最终应该是非常的简单而且非常的易于理解。

    

@Scheduled:spirng定时的注解:
@Scheduled(fixedRate = 5000)
这个注解在容器启动时便会生效,5秒执行一次任务.如果第一次任务时间为7秒从10:00执行到10:07,那么第二次任务为2秒的话,则从10:07执行到10:10(其中1秒为任务的轮询时间).

@Scheduled(cron = " 0 22 13 ? * *")
这个注解是在容器启动后的指定时间执行

@EnableAutoConfiguration注解:第二个类级别的注解是 @EnableAutoConfiguration 。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。

@PathVariable: @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过
                              @PathVariable("xxx") 绑定到操作方法的入参中。

@JsonlgnoreProperties(ignoreUnknown=true):就是说这个属性不进行json的转化,忽略这个属性的json转化。 有意思作用呢? 主要是防止一些Json转换异常错误


@RunWith():在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境 Spring
                         架在org.springframework.test.annotation 包中提供了常用的Spring特定的注解集,
@SpringBootTest():

@TestPropertySource()


@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件、 
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Scope用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
@DependsOn:定义Bean初始化及销毁时的顺序
@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
@PostConstruct 初始化注解
@PreDestroy 摧毁注解 默认 单例  启动就加载
@Async异步方法调用


@Configuration:
 Spring Boot提倡基于Java的配置。尽管你可以使用一个XML源来调用 SpringApplication.run() ,我们通常建议你使用 @Configuration 类作为主要源。一般定义 main 方法的类也是主要 @Configuration 的一个很好候选。你不需要将所有的 @Configuration 放进一个单独的类。 @Import 注解可以用来导入其他配置类。另外,你也可以使用 @ComponentScan 注解自动收集所有的Spring组件,包括 @Configuration 类。
如果你绝对需要使用基于XML的配置,我们建议你仍旧从一个 @Configuration 类开始。
你可以使用附加的 @ImportResource 注解加载XML配置文件。
@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean