# Spring Boot基本常用注解解释说明

Spring Boot基本常用注解解释说明


@Autowired

  • 用于注入依赖的对象,可用于setter方法、构造方法、字段上面。是package org.springframework.beans.factory.annotation;里面的注解。按照类型(ByType)装配依赖对象。默认为注入的对象必须存在,如果对象不存在则会报错,可以使用@Autowired(required=false)进行注入对象。

  • 结合@Qualifier注解使用。意思为,当前注入的bean的名称为@Qualifier后面的bean,注意使用@Qualifier时候后面的bean必须存在否则报错。

示例@Autowired注入对象
@Component
public class AnnoationClazz {
    
    

    private UserService userService;

    @Autowired
    RedisProperties redis;

    @Autowired(required = true)
    public void setUserService(@Qualifier("userService") UserService userService) {
    
    
        this.userService = userService;
    }
}
实例@Autowried注入静态对象
@Component
public class AnnoationClazz {
    
    
    
    private static RedisProperties redisProperties;

    @Autowired(required = true)
    public void setRedisProperties(RedisProperties redisProperties) {
    
    
        AnnoationClazz.redisProperties=redisProperties;
    }
}

@Resource

  • 默认注入方式为ByName,是java.lang.annotation.*下的类。
  • 有Name何Type属性,Spring将@Resource注解的name解析为bean的name,Type为bean的类型。如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略
实例@Resource注入对象
@Resource
private UserService userervice;

@Resource
private void setUserService(UserService userService){
    
    
    this.userService=userService;
}

@RequestParam

  • @RequestParam接收的参数是来自requestHeader中。
  • 将请求的Url上面的的参数映射到方法中的参数上面。
  • 例如请求的Url为localhost:9999/request/test2?name=张三&age=1
实例@RequestParam接收请求的参数
@RequestMapping("/test2")
public String getMap(@RequestParam String name,int age) {
    
    
    System.out.println("方法请求到了!");
    return name+String.valueOf(age);
}

@RequestBody

  • @RequestBody接收的参数来自requestBody中及请求体。
  • 一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/jsonapplication/xml等类型的数据。
实例接收参数
@RequestMapping("/test1")
public List<String> getList(@RequestBody List<String> list){
    
    
    System.out.println("方法请求到了!");
    return list;
}

@PathVariable

  • 获取Url中的数据
  • Url如:localhost:9999/request/test3/12/张三
获得url中的数据
@RequestMapping("/test3/{age}/{name}")
public String str(@PathVariable("age") int age,@PathVariable("name") String name) {
    
    
    return age+name;
}

@Component

  • 表明一个类为组件类,Spring需要为这个类创建Bean。
  • @Component(@Controller、@Service、@Respository)通过类路径扫描自动装配到Bean容器中。

@Bean

  • 表明是一个配置类中的方法,给Spring容器返回一个对象,这个对象要注册为Spring上下文中的Bean。
  • 标有Bean的方法一般描述的是产生Bean对象的逻辑
@Component
public class TestComponent {
    
    
	
	@Bean
	public User getUser() {
    
    
		User user =new User(1,"张三",new Date());
		return user;
	}
}

@PostConstruct

  • 是Java自己的注解。javax.annotation.PostConstruct
  • 该注解在整个Bean初始化中的顺序为:Constructor->@Autowired->@PostConstruct
实例初始化静态对象
@Component
public class UserUtils {
    
    
	
	private Logger logger=Logger.getLogger(UserUtils.class);
	
	private static User users;
	
	@Autowired
	User user;
		
	@PostConstruct
	public void init() {
    
    
		UserUtils.users=user;
	}
	
	public static Map<String,String> getUserMap(){
    
    
		Map<String,String> map=new HashMap<String, String>();
		map.put("age",String.valueOf(users.getAge()));
		map.put("name",users.getName());
		map.put("date", String.valueOf(users.getDate()));
		return map;		
	}
}

@Qualifier

  • 当有多个一类型的Bean的时候,可以用@Qualifier(“name”)来指定。与@Autowired注解配合使用。

@PropertySource

  • 指定需要读取的配置文件的地址,配合@Value注解使用。
@Component
@PropertySource(value = {
    
    "redis.properties"})
public class RedisProperties {
    
    
	
	@Value("${redis.url}")
	private String url;
	
	@Value("${redis.password}")
	private String password;
	
	@Value("${redis.username}")
	private String username;

}

猜你喜欢

转载自blog.csdn.net/qq_37248504/article/details/108859121