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/json
、application/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;
}