• SpringBoot常用注解总结


    在SpringBoot框架中,注解做为一种隐式配置,极大的简化了之前xml文件的配置方式。SpringBoot中包含许多种类的注解,这里对在SpingBoot项目中经常使用到的一些注解的进行大致的归纳总结;

    一、启动相关

    1、@SpringBootApplication

    SpringBootApplication注解:

    1. @Target(ElementType.TYPE)
    2. @Retention(RetentionPolicy.RUNTIME)
    3. @Documented
    4. @Inherited
    5. @SpringBootConfiguration
    6. @EnableAutoConfiguration
    7. @ComponentScan(excludeFilters = {
    8. @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
    9. @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
    10. public @interface SpringBootApplication {

    在SpirngBoot启动类里面,都加入了此启动注解,此注解是个组合注解,三个比较重要的:

    • @SpringBootConfiguration 继承至@Configuration,其实两种功能一致,都是标注该类为配置类
    • @EnableAutoConfiguration 这个注解是SpirngBoot自动配置的核心所在,通过此注解,能所有符合自动配置条件的bean的定义加载到spring容器中。
    • @ComponentScan 该注解会扫描当前包及子包下面被纳入sping容器管理的类。

    注意事项:

    • 一般我们在实际项目中会根据自己的需要排除一些无需自动配置的类,例如我们会配置自己的数据库,所以就不需要springboot自动注入数据源,这可以利用exclude进行排除

    @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

    • 当需扫描第三方jar包时,我们可以通过在配置类中使用@Configuration与@ComponentScan来引入第三方jar包下的类

    @Configuration

    @ComponentScan(basePackages = {"com.test.service"}) //引入第三方jar包下的类

    2、@Import

     @Import注解可用来导入一个或者多个 Spring 配置文件,特别是第三方jar包下的一些配置类,需要通过Import注解进行加载,代码如下所示

    @Import({KafkaConfig.class, JedisConfig.class}) //引入第三方jar包里配置类

    二、配置相关

    以一般的的配置类中用到的注解为例

    1、@Configuration

    @Configuration专门用来标注配置类,它一般会配合

    2、@Bean

    使用@Bean注解拿到配置返回相关实例,并放入sping容器中统一管理

    3、@PropertySource

    目的是加载指定路径下的属性文件

    4、@Value

    配合@PropertySource注解使用,指定该字段对应的配置文件中的内容

    5、@Order

    利用@Order控制配置类的加载顺序

    结合以上注解对kafka进行配置示例代码如下

    @Configuration
    @PropertySource("classpath:spring-kafka.properties")
    @Order(2)
    public class KafkaConfig {
        @Value("${spring.kafka.bootstrap-servers}")
        private String bootstrapServers;
        @Bean
        public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Object, Object>> kafkaListenerContainerFactory() {
            ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<Object, Object>();
            factory.setConsumerFactory(consumerFactory());
            factory.setConcurrency(1);
            // factory .getContainerProperties().setPollTimeout(1000);
            return factory;
        }
    }

    三、构造相关

    1、@Service

    用于标注服务层,主要用来进行业务的逻辑处理

    2、@Repository

    用于标注持久层,主要用来进行数据库相关操作

    3、@Component

    一个通用的注解,可以注解各种组件,就是说当我们需要注入sping容器中bean类没有明确分类时(不属于@service、@Repository等的时候),我们就可以使用@Component来标注这个类。

    4、@Scope

    spring容器管理bean默认是单例模式,如果你需要使用多例模式可以通过@Scope("prototype")注解来实现。

    5、@Autowired

    这个就很简单了,用于Spring容器中Bean类实例的注入

    6、@PostConstruct

    在Bean初始化之后(构造方法和@Autowired之后)执行指定操作。如果在项目中有些操作需要在Bean类构造后执行,可以使用@PostConstruct注解,实例代码如下

    @RestController
    @RequestMapping("/api")
    public class ApiController extends BaseController {
        @PostMapping("/login")
        public  User  login(@RequestBody User user){
               //代码
         }
        @GetMapping("/getUser")
        public  User  getUser(@RequestParam String userName, @RequestParam String userPhone){
               //代码
         }
    }
  • 相关阅读:
    Django之forms.Form
    Django之Middleware中间件方法使用
    Django之请求生命周期
    Django操作session实例
    Django操作cookie实例
    Django操作session
    Django操作cookie
    Django之cookie与session
    Django之AJAX传输JSON数据
    Django之JSON数据格式
  • 原文地址:https://www.cnblogs.com/yysbolg/p/13569273.html
Copyright © 2020-2023  润新知