SpringBoot项目常用注解

SpringBoot注解

  • @SpringBootApplication 包含了@ComponentScan@Configuration@EnableAutoConfiguration注解

    • Configuration注解通常与@Bean一起使用,使用这两个注解可以创建一个简单的Spring配置类,替代Xml配置,也可以使用@ImportResource注解加载xml配置文件
      • @EnableAutoConfiguration

      这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring,由于 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。Starter POMs和Auto-Configuration:设计auto-configuration的目的是更好的使用”Starter POMs”,但这两个概念没有直接的联系。你可以自由地挑选starter POMs以外的jar依赖,并且Spring Boot将仍旧尽最大努力去自动配置你的应用。参考spring.factories

      • @ComponentScan注解 见下文 Bean 声明注解
    • @Value 获取application.properties配置的属性的值

 

Bean 声明注解

  • @Service 业务逻辑层
  • @Component 组件(不容易归类可以使用该组件)
  • @Repository 数据访问层
  • @Controller Spring mvc 展现层
  • @Configurable 声明当前类是一个配置类
  • @ComponentScan("com.yss.ms") 设置自动扫描包下面所有的 (@Service @Component @Repository @Controller) 使用springboot开发时候,启动类会隐式的指定了扫描时basePackage的路径,参考@SpringBootApplication
  • @EnableAsync 开启异步任务支持
  • @PropertySource("classpath:application.properties") 用于指定目录,指定编码读取properties文件
  • @EnableScheduling 注解开启对计划任务的支持

Bean 注入注解

  • @Autowired Spring 提供 等同autowire=byType,根据类型的自动注入依赖
  • @Qualifier Spring 提供 等同autowire=byName,当@Autowired注解需要判断多个 bean类型相同时,就需
    要使用@Qualifier(“xxBean”)来指定依赖的bean的id
  • @Resource 属于JSR-250标准 作用同@Autowired,是属于byName类 型的依赖注入,使用方式:
    @Resource(name=”xxBean”),不带参数是默 认类名首字母小写
  • @Value("xxxx") 注入普通字符串
  • @Value("${xxx.xxx}") 注入配置文件中字符串
  • @PostConstruct 标注在方法上,在构造函数执行完毕后执行
  • @PreDestroy 标注在方法上,销毁前执行
  • @Async 异步方法表明,若是在class上则全是
  • @Scheduled 声明方法是计划任务
  • @Conditional() 条件注解,当满足某条件时

Spring MCV

  • @RequestMapping
    用于映射Web请求 返回体,编码格式都可以在此处设置
    produces = {} 设置返回值json/xml charset 等
  • @RestControlle 组合注解,组合了@Controller和@ResponseBody
  • @ResponseBody 将Controller的方法返回的对象通过适当的转换(通过配置可以返回Json或XML数据),写入
    response对象的body数据区
  • @RequestBody 用于读取request请求的body部分数据(Json串或XML数据),将其转化为需要的对象
  • @PathVariable 用来接收路径参数,api/{id}

 

JUnit4 注解

  • @After 如果在@Before注解方法中分配了额外的资源,那么在测试执行完后,需要释放分配的资源,使用@After注解一个public void方法会使该方法在@Test注解方法执行后被执行
  • AfterClass 如果在@BeforeClass注解方法中分配了代价高昂的额外的资源,那么在测试类中的所有测试方法执行完后,需要释放分配的资源,使用@AfterClass注解一个public static void方法会使该方法在测试类中的所有测试方法执行完后被执行
  • @Before 使用@Before注解一个public void 方法会使该方法在@Test注解方法被执行前执行
  • @BeforeClass 使用@BeforeClass注解一个public static void 方法,并且该方法不带任何参数,会使该方法在所有测试方法被执行前执行一次,并且只执行一次
  • @Ignore 对包含测试类的类或@Test注解方法使用@Ignore注解将使被注解的类或方法不会被当做测试执行
  • @Test @Test注解的public void方法将会被当做测试用例,JUnit每次都会创建一个新的测试实例,然后调用@Test注解方法
  • @RunWith 指定测试类使用某个运行器,如:@RunWith(SpringRunner.class)

 

 

Controller 相关注解

@Controller

控制器,处理http请求。

@RestController 复合注解

查看@RestController源码

源码我们知道,@RestController注解相当于@ResponseBody+@Controller合在一起的作用,RestController使用的效果是将方法返回的对象直接在浏览器上展示成json格式.

@RequestBody

通过HttpMessageConverter读取Request Body并反序列化为Object(泛指)对象

@RequestMapping

@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上

@GetMapping用于将HTTP get请求映射到特定处理程序的方法注解

注解简写:@RequestMapping(value = "/say",method = RequestMethod.GET)等价于:@GetMapping(value = "/say")

GetMapping源码

是@RequestMapping(method = RequestMethod.GET)的缩写

@PostMapping用于将HTTP post请求映射到特定处理程序的方法注解

是@RequestMapping(method = RequestMethod.POST)的缩写

三、取请求参数值

@PathVariable:获取url中的数据

请求示例:http://localhost:8080/User/getUser/123

@RequestParam:获取请求参数的值

@Controller
@RequestMapping("/User")
public class HelloWorldController {

}

请求示例:http://localhost:8080/User/getUser?uid=123

@RequestHeader 把Request请求header部分的值绑定到方法的参数上

@CookieValue 把Request header中关于cookie的值绑定到方法的参数上

四、注入bean相关

@Repository

DAO层注解,DAO层中接口继承JpaRepository<T,ID extends Serializable>,需要在build.gradle中引入相关jpa的一个jar自动加载。

@Service

  • @Service是@Component注解的一个特例,作用在类上
  • @Service注解作用域默认为单例
  • 使用注解配置和类路径扫描时,被@Service注解标注的类会被Spring扫描并注册为Bean
  • @Service用于标注服务层组件,表示定义一个bean
  • @Service使用时没有传参数,Bean名称默认为当前类的类名,首字母小写
  • @Service(“serviceBeanId”)或@Service(value=”serviceBeanId”)使用时传参数,使用value作为Bean名字

@Scope作用域注解

@Scope作用在类上和方法上,用来配置 spring bean 的作用域,它标识 bean 的作用域

@Entity实体类注解

@Table(name ="数据库表名"),这个注解也注释在实体类上,对应数据库中相应的表。
@Id、@Column注解用于标注实体类中的字段,pk字段标注为@Id,其余@Column。

@Bean产生一个bean的方法

@Bean明确地指示了一种方法,产生一个bean的方法,并且交给Spring容器管理。支持别名@Bean("xx-name")

@Autowired 自动导入

  • @Autowired注解作用在构造函数、方法、方法参数、类字段以及注解上
  • @Autowired注解可以实现Bean的自动注入

@Component

把普通pojo实例化到spring容器中,相当于配置文件中的

虽然有了@Autowired,但是我们还是要写一堆bean的配置文件,相当麻烦,而@Component就是告诉spring,我是pojo类,把我注册到容器中吧,spring会自动提取相关信息。那么我们就不用写麻烦的xml配置文件了

五、导入配置文件

@PropertySource注解

引入单个properties文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties"})

引入多个properties文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties","classpath : xxxx.properties"})

@ImportResource导入xml配置文件

可以额外分为两种模式 相对路径classpath,绝对路径(真实路径)file

注意:单文件可以不写value或locations,value和locations都可用

相对路径(classpath)

  • 引入单个xml配置文件:@ImportSource("classpath : xxx/xxxx.xml")

  • 引入多个xml配置文件:@ImportSource(locations={"classpath : xxxx.xml" , "classpath : yyyy.xml"})

绝对路径(file)

  • 引入单个xml配置文件:@ImportSource(locations= {"file : d:/hellxz/dubbo.xml"})

  • 引入多个xml配置文件:@ImportSource(locations= {"file : d:/hellxz/application.xml" , "file : d:/hellxz/dubbo.xml"})

取值:使用@Value注解取配置文件中的值

@Value("${properties中的键}")
private String xxx;

@Import 导入额外的配置信息

功能类似XML配置的,用来导入配置类,可以导入带有@Configuration注解的配置类或实现了ImportSelector/ImportBeanDefinitionRegistrar。

使用示例

六、事务注解 @Transactional

在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式

  • 编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
  • 声明式事务管理: 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务,通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用

七、全局异常处理

@ControllerAdvice 统一处理异常

@ControllerAdvice 注解定义全局异常处理类

@ExceptionHandler 注解声明异常处理方法

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章