简明SpringBoot小注解
SpringBoot之一些注解 -<翟永超的Springboot的入门教程>
注解
@Controller
修饰class,用来创建处理http请求的对象
@RestController
Spring4之后加入的注解,原来在@Controller
中返回json需要@ResponseBody
来配合,如果直接用@RestController
替代@Controller
就不需要再配置@ResponseBody
,默认返回json格式
@RequestMapping
配置url映射。现在更多的也会直接用以Http Method直接关联的映射注解来定义,比如:GetMapping
、PostMapping
、DeleteMapping
、PutMapping
等
@ConfigurationProperties
Spring IOC有一个非常核心的概念——Bean。由Spring容器来负责对Bean的实例化,装配和管理,JavaConfig就是使用注释来描述Bean配置的组件。使用XML来配置Bean所能实现的功能,通过JavaConfig同样可以很好的实现。
ConfigurationProperties注解,有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,该注解可以放在类上,也可以放在方法上
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {
@AliasFor("prefix")
String value() default "";
@AliasFor("value")
String prefix() default "";
boolean ignoreInvalidFields() default false;
boolean ignoreUnknownFields() default true;
}
Sring的有效运行是通过上下文(Bean容器)中Bean的配合完成的,Bean可以简单理解成对象,有些对象需要指定字段内容,那么这些内容我们可以通过配置文件进行绑定,然后将此Bean归还给容器
例:
wx:
miniapp:
configs:
- appid: #微信小程序的appid
secret: #微信小程序的Secret
token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON
@Data
@ConfigurationProperties(prefix = "wx.miniapp")
public class WxMaProperties {
private List<Config> configs;
@Data
public static class Config {
/**
* 设置微信小程序的appid
*/
private String appid;
/**
* 设置微信小程序的Secret
*/
private String secret;
/**
* 设置微信小程序消息服务器配置的token
*/
private String token;
/**
* 设置微信小程序消息服务器配置的EncodingAESKey
*/
private String aesKey;
/**
* 消息格式,XML或者JSON
*/
private String msgDataFormat;
}
}
@RequestMapping
@GetMapping
@RequestMapping(
method = {RequestMethod.GET}
)
@PostMapping
@RequestMapping(
method = {RequestMethod.POST}
)
@Value
@Component
public class Book {
@Value("${book.name}")
private String name;
@Value("${book.author}")
private String author;
// 省略getter和setter
}
book.name=SpringCloudInAction
book.author=ZhaiYongchao
@Value
注解加载属性值的时候可以支持两种表达式来进行配置:
- 一种是我们上面介绍的PlaceHolder方式,格式为
${...}
,大括号内为PlaceHolder - 另外还可以使用SpEL表达式(Spring Expression Language), 格式为
#{...}
,大括号内为SpEL表达式
@Transactional
Mybatis中声明式事务注解,可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。默认情况下,只有来自外部的方法调用才会被AOP代理捕获,也就是,类内部方法调用本类内部的其他方法并不会引起事务行为,即使被调用方法使用@Transactional注解进行修饰。
@Slf4j
slf4j是一个日志标准,使用它可以完美的桥接到具体的日志框架,必要时可以简便的更换底层的日志框架,而不需要关心具体的日志框架的实现(slf4j-simple、logback等)
在类上添加@Slf4j注解,在方法中直接使用log
@Rollback
表示事务执行完回滚,支持传入一个参数value,默认true即回滚,false不回滚。 该注解一样支持对类的注解,若如此做,对整个class的方法有效