SpringBoot中常用的注解
到新公司来以后用的Springboot开发组件,和上家公司私有框架差别天那么大…虽说以前了解过一点,但毕竟没法和正经的项目比较,一开始最困惑的应该就是茫茫多的注解了。所有在这把一些常用的注解记录下,以加深记忆。
- 初始化信息
//这两个是Lombok插件的功能,可以减少很多重复代码
@Getter
@Setter
//注解在类上,表示这是一个IOC容器,相当于spring的配置文件
@Configuration
//用于加载指定的属性文件
@PropertySource("classpath:service.properties")
//用在类上 指定属性的同一前缀,对应的属性文件配置为
//service.config.url = 127.0.0.1
//service.config.port = 9083 ....
@ConfigurationProperties(prefix = "service.config")
public class ServiceConfig {
//也可用于属性 和@value区别见下面
@ConfigurationProperties(prefix = "service.config.url")
private String url;
//也是注入特定的配置值
@Value("${service.config.url}")
private Integer port;
private String userName;
private String passWord;
// 注解在方法上,声明当前方法返回一个Bean,默认名称为方法名
@Bean("mqServerImpl")
//注解在方法上 属于JavaEE的注解 在服务器加载servlet时,init方法之后执行
@PostConstruct
//选择会在特定的环境下执行 测试、生产......
@Profile(value = "dev")
//条件注解 其中xxx实现了Condition 接口 中matches方法,返回true时才创建并注入bean
//spring帮我们实现了很多,直接用就行 如@ConditionalOnClass等等
@Conditional(xxx.class)
public MqServer mqServer(){
return new MqServer();
}
}
//注解在类上,表示被spring管理的通用bean
@Component
//导入配置类
@Import(ServiceConfig.class)
public class User(){
@Autowired
private ServiceConfig serviceConfig;
}
@Value和@ConfigurationProperties的异同
对比项 | @ConfigurationProperties | @Value |
---|---|---|
注解功能 | 将配置文件中的属性值批量注入类的各个属性 | 为类中的各个属性逐个赋值 |
松散绑定 | 支持 | 不支持 |
SpEL(Spring 表达式) | 不支持 | 支持 |
复杂类型封装 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
- MVC相关
spring实在是太庞大了,其中随便一部分都能研究很久,像SpringEL,ioc,aop等等,里面的设计模式也是用的很经典。以后慢慢看吧