SpringBoot开发常用注解说明

springboot学习时会用到各种各样的注解,这些注解方便我们开发项目,但注解实在是太多了(捂脸),因此写这篇博客来总结一下~

lombok相关

@Data

用在bean类中,lombok用于生成get,set方法的注解

@ToString

用在bean类中,lombok用于生成get,set方法的注解,lombok编译阶段生成ToString方法的注解

@AllArgsConstructor

用在bean类中,lombok用于生成全参构造器

@NoArgsConstructor

用在bean类中,lombok用于生成无参构造器

注:若需要使用定制构造函数,需要自己写在bean类中

其他常用注解

@Component

把普通bean实例化到spring容器中

@Autowired

例如
	@Autowired
    Car car;
被注解的这个类是从Spring容器中取出来的

@ConfigurationProperties

在 Spring Boot 项目中,我们将大量的参数配置在 application.properties 或 application.yml 文件中,此注解负责将配置文件中的参数注解到普通类上

三种常见使用方式

  • @Component
    // 表示使用配置文件中前缀为user1的属性的值初始化该bean定义产生的的bean实例的同名属性
    @ConfigurationProperties(prefix = "user1")
    public class User {
    	private String name;
    	// 省略getter/setter方法
    }
    
  • @Configuration
    public class DataSourceConfig {
    
    	@Primary
    	@Bean(name = "primaryDataSource")
    	@ConfigurationProperties(prefix="spring.datasource.primary")
    	public DataSource primaryDataSource() {
    		return DataSourceBuilder.create().build();
    	}
    }
    这里便是将前缀为“spring.datasource.primary”的属性,赋值给DataSource对应的属性值。
    @Configuration注解的配置类中通过@Bean注解在某个方法上将方法返回的对象定义为一个Bean,并使用配置文件中相应的属性初始化该Bean的属性。
    
  • 使用@ConfigurationProperties注解到普通类,然后再通过@EnableConfigurationProperties定义为Bean

    @ConfigurationProperties(prefix = "user1")
    public class User {
    	private String name;
    	// 省略getter/setter方法
    }
    

    这里User对象并没有使用@Component相关注解,而该User类对应的使用形式如下:

    @SpringBootApplication
    @EnableConfigurationProperties({User.class})
    public class Application {
        public static void main(String[] args) throws Exception {
            SpringApplication.run(Application.class, args);
        }
    }
    

@RestController

在Spring中@RestController的作用等同于@Controller + @ResponseBody,要先了解@Controller和@ResponseBody注解。

@Controller

在一个类上添加@Controller注解,表明了这个类是一个控制器类,但光有@Controller注解是不够的,需要进一步处理才能成为一个处理器

  1. 将@Controller注解的类注入spring容器中,这一步springboot的包扫描给我们做了
  2. 在该类中添加注解@RequestMapping

@RequestMapping

该注解是用来映射请求的,即指明处理器可以处理哪些URL请求,该注解既可以用在类上,也可以用在方法上。

@ResponseBody

@ResponseBody表示方法的返回值直接以指定的格式写入Http response body中,而不是解析为跳转路径。

如果要求方法返回的是json格式数据,而不是跳转页面,可以直接在类上标注@RestController,而不用在每个方法中标注@ResponseBody,简化了开发过程。

@Bean

用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中,默认作用域为单例singleton作用域,

//产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中,是一个单例
    
//Myconfig.java
@Bean("Tom")
public Pet tomcatPet(){
    return new Pet("tom");
}

@SpringBootApplication()
public class SecondApplication {
    public static void main(String[] args) {
        Pet tom1 = run.getBean("Tom", Pet.class);
        Pet tom2 = run.getBean("Tom", Pet.class);
        System.out.println("两个tom是否一样"+(tom1 == tom2));
    }
}
//打印结果是true,注册的组件默认是单实例

@Configuration(proxyBeanMethods = true)

用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,

proxyBeanMethods 默认为true

/*
Full:(proxyBeanMethods = true)
打印配置类,打印结果为com.hammer.config.Myconfig$$EnhancerBySpringCGLIB$$ba5f8b0d@6edc4161
是一个被cglib增强了的代理对象
当组件注册的方法被调用时,程序会去容器中找这个单例对象组件
该模式下,配置类内部可以通过方法调用来处理依赖,并且能够保证是同一个实例,都指向IoC内的那个单例
**/

/*
Lite:(proxyBeanMethods = false)
打印配置类,打印结果为
com.hammer.config.Myconfig@997d532
不是代理对象
每当组件注册的方法被调用时,都会产生一个新的对象
该模式下,配置类内部不能通过方法调用来处理依赖,否则每次生成的都是一个新实例而并非IoC容器内的单例
**/

@ConditionalOnBean

应用包含某个类时,配置才生效

    @Bean("Tom")
    public Pet tomcatPet(){
        return new Pet("tom");
    }

    /*
    * @ConditionalOnBean(name = "Tom")如果加在方法上,当容器中存在Tom组件时,该方法返回的组件才会注册在容器里
    * 如果加在类上,当条件成立时,类中所有的配置才会生效
    *
    * */
    @Bean
    @ConditionalOnBean(name = "Tom")
    public User user01(){
        User hammer = new User("hammer",23);
        hammer.setPet(tomcatPet());
        return hammer;
    }

@ImportResource

导入Spring的配置文件让其生效

//导入Spring的配置文件让其生效
@ImportResource("classpath:bean.xml")

@EnableConfigurationProperties

//开启属性配置功能,把组件自动注册到容器中
@EnableConfigurationProperties(Car.class)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot开发常用的注解有很多,下面我列举一些常见的注解及其作用: 1. `@SpringBootApplication`: 该注解标注在主类上,用于启动SpringBoot应用程序。它是一个复合注解,包含了`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`三个注解的功能。 2. `@RestController`: 该注解标注在Controller类上,用于处理HTTP请求,并将返回结果直接写入HTTP响应中,通常用于构建RESTful风格的API。 3. `@RequestMapping`: 该注解用于映射HTTP请求路径到Controller的处理方法上,可以用于类级别和方法级别。通过指定请求路径、HTTP方法等属性,将请求映射到对应的方法上进行处理。 4. `@PathVariable`: 该注解用于将URL路径中的占位符参数绑定到方法的参数上。 5. `@RequestParam`: 该注解用于将HTTP请求参数绑定到方法的参数上。 6. `@RequestBody`: 该注解用于将HTTP请求体中的数据绑定到方法的参数上,通常用于接收JSON或XML格式的数据。 7. `@ResponseBody`: 该注解用于将方法的返回值直接写入HTTP响应体中,通常用于返回JSON或XML格式的数据。 8. `@Autowired`: 该注解用于自动装配Spring容器中的Bean,可以通过构造方法、属性、方法等方式进行注入。 9. `@Component`: 该注解用于标注一个类为Spring容器的Bean。 10. `@Service`: 该注解用于标注一个类为业务层的Bean,通常用于Service类。 11. `@Repository`: 该注解用于标注一个类为数据访问层的Bean,通常用于DAO类。 12. `@Configuration`: 该注解用于标注一个类为配置类,通常与`@Bean`一起使用,用于定义Bean的创建和配置。 13. `@Bean`: 该注解用于在配置类中定义一个Bean,并将其加入到Spring容器中。 这些是SpringBoot开发中常用的注解,通过合理地使用这些注解,可以简化开发过程,提高开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值