SpringBoot之注解

一、基础注解

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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值