- @SpringBootApplication 加在启动类上 ,是一个复合注解包含,作用是让springboot自动给程序进行必要的配置,包含了:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan
(1)@SpringBootConfiguration::标注当前类是配置类,这个注解继承自@Configuration。并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。
(2) @EnableAutoConfiguration:是自动配置的注解,这个注解会根据我们添加的组件jar来完成一些默认配置。允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径>下的包或者类来配置 Spring Bean。我们做微服时会添加spring-boot-starter-web这个组件jar的pom依赖,这样配置会默认配置springmvc 和tomcat。又如:当前类路径下有 Mybatis 这个 JAR 包,MybatisAutoConfiguration 注解就能根据相>关参数来配置 Mybatis 的各个 Spring Bean。
(3)@ComponentScan:扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。等价于context:component-scan的xml配置文件中的配置项。 - @Configuration :这是 Spring 3.0 添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个>配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。相当于:
<Beans> </Beans>
- @Controller:用于定义控制器类,由控制器负责将用户发来的URL请求转发到对应的服务接口
- @Service:用于修饰service层的组件
- @RequestMapping:负责URL到Controller中的具体函数的映射
- @RequestParam:接受的参数来自requestHeader,并将参数赋值到被@RequestParam注解的变量上,可使用requet.getParameter(“”)获取
- @RequestBody:将接收的json数据装载到实体类中。与@RequestParam两个注解都是用于方法中接收参数使用的,两者也有一定的区别。 @RequestBody这个一般处理的是在ajax请求中声明contentType: “application/json; charset=utf-8”时候。@RequestParam这个一般就是在ajax里面没有声明contentType的时候,为默认的。。。urlencode格式时,用这个
- @ResponseBody:将方法的返回值通过合适的HttpMessageConverter转换成特定格式写入到response的body区域
- @Param:参数注解,一般用在mapper接口中
- @Resource/@Autowired:自动导入依赖的bean
区别:
@Resource 默认按照名称进行装配,通过name属性进行指定,找不到与名称匹配的bean才会按类型装配
@Autowired 默认按类型装配,也可以使用名称装配,配合@Qualifier注解 - @Qualifier 表明哪个实现类才是我们所需要的,与@Resource的 name属性功能类似
- @Component:把普通pojo实例化到spring容器中,相当于配置文件中的 ;泛指组件
- @Bean:主要用在@Configuration注解的类里,也可以用在@Component注解的类里,相当于
<Bean></Bean>
- @Value:注入SpringBoot中配置文件的属性值;@Value(“${}”)
- @Transactional:通过这个注解可以声明事务,可以添加在类上或者方法上
- @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
- @PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
- @MapperScan:同@Mapper作用,不过在Springboot启动类上面添加,指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
- @Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。(只对接口的多个实现生效)
- @Scope用于指定scope作用域的(用在类上)
- @Lazy(true) 表示延迟初始化
- @Repository用于标注数据访问组件,即DAO组件。
- @PostConstruct用于指定初始化方法(用在方法上)
- @PreDestory用于指定销毁方法(用在方法上)
- @DependsOn:定义Bean初始化及销毁时的顺序
- @Mapper:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类
- @Scheduled:定时任务注解;cron表达式:[秒] [分] [小时] [日] [月] [周] [年]
- @EnableAsync:启动方法的异步调用,用在线程池的配置类中
- @Async 标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作
- @Import:用来导入其他配置类。
- @ImportResource:用来加载xml配置文件。
- @Repository DAO层注解,DAO层中接口继承JpaRepository<T,ID extends Serializable>,需要在build.gradle中引入相关jpa的一个jar自动加载。
- @Inject:等价于默认的@Autowired,只是没有required属性;
- @EnableScheduling:启动任务调度,一般用在启动类上
- jpa注解
@Entity:@Table(name=”“):表明这是一个实体类。一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略
@MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。
@NoRepositoryBean:一般用作父类的repository,有这个注解,spring不会去实例化该repository。
@Column:如果字段名与列名相同,则可以省略。
@Id:表示该属性为主键。
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”):表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq。
@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致。
@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式
@JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。
@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。
@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。