一、基础注解
1. @SpringBootApplication
:表明这是个springboot应用的启动类。它的作用效果等同于以下三个注解同时使用:@Configuration
、@EnableAutoConfiguration
和@ComponentScan
@SpringBootApplication = (默认属性) @Configuration + @EnableAutoConfiguration + @ComponentScan
@SpringBootApplication
public class SpringBootRedisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootRedisApplication.class, args);
}
}
2. @Configuration
:注解在该类在表明该类相当于传统的xml配置文件,一般与@Bean
注解同时使用
(1) @Bean
: 标注在方法上,等同于spring的xml文件配置的bean。
(2) 作用:会实例化、配置并初始化一个新的对象,并将这个对象交给spring IoC容器管理。
在spring的xml配置文件中如下:
<beans>
<bean id = "person" class = "com.zyj.pojo"> </bean>
</beans>
在springboot框架中等同于
@Configuration
public class Conf {
@Bean
public Person person() {
return new Person();
}
}
若要使用自定义生成对象的名字,不使用默认方法名,则表示如下
@Configuration
public class Conf {
@Bean(name = "myPerson")
public Person person() {
return new Person();
}
}
@Bean一般与@Configuration和Component一起使用,两者区别在于:@Component 注解的类中不能定义 类内依赖的@Bean注解的方法,而@Configuration可以。
@Configuration
public class Person{
@Bean
public Man man() {
return new Person(women());
}
@Bean
public Women women() {
return new Women();
}
}
3. @EnableAutoConfiguration
:SpringBoot帮我自动配置,它的底层包括两个注解分别如下
(1)@AutoConfigurationPackage
:自动配置包
(2)@Import({AutoConfigurationImportSelector.class})
:它由spring的底层注解@Import
:给容器中导入一个组件;AutoConfigurationImportSelector
:导入哪些组件的选择器,将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中。给容器中导入非常多的自动配置类(xxxxAutoConfiguration);就是给容器中导入这个场景所需要的自动配置类,并配置好所有组件。
原理:springboot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中和,自动配置类就生效,帮我们自动配置工作。
4. @ComponentScan
:定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中。
5. @Controller
:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping
来一起使用。
6. @RequestMapping
:提供路由信息,负责URL到Controller中的具体函数的映射。
@Controller
public class PersonController {
@Autowired
private Person person;
@ResponseBody
@RequestMapping("/getName")
public String get(){
return this.person.getName("zhangsan");
}
}
7.@ResponseBody
:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。
8.@RestController
:用于标注控制层Controller的组件,有@Controller
和@Response
所组成。
@RestController
public class PersonController {
@Autowired
private Person person;
@RequestMapping("/getName")
public String get(){
return this.person.getName("zhangsan");
}
}
9.@AutoWired
:在spring中自动按照类型导入依赖的bean。
10.@Service
:一般用于修饰service层的注解
11.@Reposity
:一般用于修饰持久层dao的注解
12.@PathVariable
:路径变量,注意:参与大括号{}里面的变量名相同
RequestMapping("person/getName/{name}")
public String getName(@PathVariable String name){
//....
}
13.@Data
:@Data = @Setter + @Getter + @ToString
注解在类上,提供类所有属性的 getter和 setter方法,此外还提供了equals、canEqual、hashCode、toString 方法,在pom.xml添加依赖如下:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
二、自动配置注解
1.@ConditionOnBean
:仅在上下文中存在某个bean时,才会实例化这个bean。
2.@ConditionOnMissingBean
:当上下文不存在某个bean时,才会实例化这个bean。
3.@ConditionOnClass
:某个class位于类路径上,才会实例化这个Bean。
4.@ConditionalOnMissingClass
:某个class在类路径上不存在的时候,才会实例化这个Bean。
5.@ConditionOnExression
:当表达式为true的时候,才会实例化这个bean。
6.@ConditionalOnNotWebApplication
:不是web应用时才会实例化这个Bean。
7.@AutoConfigureAfter
:在某个bean完成自动配置后实例化这个bean。
8.@AutoConfigureBefore
:在某个bean完成自动配置前实例化这个bean。