#一、SpringBoot(Spring)
- @SpringBootApplication
组合注解,等同于@Configuration+@EnableAutoConfiguration+@ComponentScan的合集 - @EnableAutoConfiguration
开启自动化配置,一般加在主类上 - @ComponentScan
组件扫描,默认就会装配标识了@Controller,@Service,@Repository,@Component等注解的类到spring容器中,相当于xml中的<context:component-scan base-package=”com.singleZhang.xxx”/> - @Configuration
用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,相当于xml中的 - @Bean
相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理 - @Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注 - @Repository
用于标注数据访问组件,即DAO组件 - @Controller
用于标注是控制层组件,需要返回页面时请用@Controller而不是@RestController - @ResponseBody
表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,比如异步获取json数据 - @RestController
用于标注控制层组件,包含@Controller和@ResponseBody - @Service
用于标注业务层组件 - @RequestBody
参数前加上这个注解之后,认为该参数必填。表示接受json字符串转为对象 List等 - @RequestMapping
用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径 - @GetMapping、@PostMapping
相当于@RequestMapping(value=”/”,method=RequestMethod.Get/Post/Put/Delete等) 。是个组合注解 - @RequestParam
用在方法的参数前面。相当于 request.getParameter,如@RequestParam(defaultValue = “1”) Integer page; - @PathVariable
路径变量。如 @RequestMapping(value = “/salary/{ids}”, method = RequestMethod.DELETE)public RespBean deleteSalary(@PathVariable String ids) {…} - @AutoWired
byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
当加上(required=false)时,就算找不到bean也不报错 - @ConfigurationProperties
自定义对bean配置一组相同前缀的属性
@ConfigurationProperties(prefix = "redisson")
public class RedissonProperties {...}
@EnableConfigurationProperties(RedissonProperties.class)
public class RedissonAutoConfiguration {
@Autowired
private RedissonProperties redssionProperties;
@Bean
@ConditionalOnProperty(name="redisson.address")
RedissonClient redissonSingle() {
Config config = new Config();
SingleServerConfig serverConfig = config.useSingleServer()
.setAddress(redssionProperties.getAddress())
.setTimeout(redssionProperties.getTimeout())
.setConnectionPoolSize(redssionProperties.getConnectionPoolSize())
.setConnectionMinimumIdleSize(redssionProperties.getConnectionMinimumIdleSize());
if(StringUtils.isNotBlank(redssionProperties.getPassword())) {
serverConfig.setPassword(redssionProperties.getPassword());
}
return Redisson.create(config);
}
}
- @EnableTransactionManagement
Spring Boot的事务管理注解,用于开启事务支持,之后便可在service层中使用@Transactional注解
#二、Jpa
- @Entity、@Table(name=”“)
表明这是一个实体类,一般用于jpa 。
这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略 - @MappedSuperClass
用在确定是父类的entity上。父类的属性子类可以继承 - @NoRepositoryBean
一般用作父类的repository,有这个注解,spring不会去实例化该repository - @Column
如果字段名与列名相同,则可以省略 - @Id
表示该属性为主键 - @GeneratedValue(strategy=GenerationType.SEQUENCE,generator = “repair_seq”)
表示主键生成策略是sequence(type:TABLE、SEQUENCE、IDENTITY、AUTO),指定sequence的名字是repair_seq - @SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1)
name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致 - @Transient
表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性 - @JsonIgnore
作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响 - @JoinColumn(name=”loginId”)
一对一:本表中指向另一个表的外键;
一对多:另一个表指向本表的外键 - @OneToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)
一对一 - @OneToMany(cascade = CascadeType.ALL)
一对多 - @ManyToOne
多对一 - @ManyToMany
多对多,需要和@JoinTable表结合使用,@ManyToMany总是使用中间关系连接表来存储关系
@Entity
public class Student {
@Id
private String id;
@ManyToMany(mappedBy = "students")
private List<Teacher> teachers;
}
@Entity
public class Teacher {
@Id
private String id;
@ManyToMany
private List<Student> students;
}
因为是双向的,加入mappedBy,使中间表只有一张。
- @Query
自定义sql查询语句
// Menu 为实体Entity类
@Query("select max(sort) from Menu m where m.pid = ?1 and m.status <> " + StatusConst.DELETE)
public Integer findSortMax(long pid);
//使用表名的话,需要加 nativeQuery = true
@Query("select max(sort) from sys_menu m where m.pid = ?1 and m.status <> " + StatusConst.DELETE,nativeQuery=true)
public Integer findSortMax(long pid);
#三、全局异常处理
- @ControllerAdvice
包含@Component。可以被扫描到。统一处理异常 - @ExceptionHandler(Exception.class)
用在方法上面表示遇到这个异常就执行以下方法
#四、SpringCloud
- @EnableEurekaServer
用在springboot启动类上,表示这是一个eureka服务注册中心 - @EnableDiscoveryClient
用在springboot启动类上,表示这是一个服务,可以被注册中心找到 - @LoadBalanced
开启负载均衡能力 - @EnableCircuitBreaker
用在启动类上,开启断路器功能 - @EnableConfigServer
用在启动类上,表示这是一个配置中心,开启Config Server - @EnableZuulProxy
开启zuul路由,用在启动类上
-@SpringCloudApplication
组合注解,包含@SpringBootApplication、@EnableDiscovertyClient、@EnableCircuitBreaker
分别是SpringBoot注解、注册服务中心Eureka注解、断路器注解。对于SpringCloud来说,这是每一微服务必须应有的三个注解。
#五、Mybatis
- @MapperScan
扫描指定包下的mapper接口
@MapperScan("com.singlezhang.zxadmin.*.mapper")
继续补充…