Spring-注解(2)
方法上的注解
传值
@Value
概述
- 获取配置文件中的值。
- 格式:
@Value( "${value}" )
- 格式:
- SpEL表达式
- 格式:
@Value( "#{SpEL}" )
- 格式:
示例
-
获取配置文件中的值:
-
java 代码
@Data @AllArgsConstructor @NoArgsConstructor public class User { @Value("${jdbcUrl}") private String name; @Value("${pwd}") private Integer age; } -
配置文件 (properties 配置文件)
jdbcUrl=www.baidu.com pwd=123456 -
xml 文件
<context:property-placeholder location="classpath:导入配置文件"/>
-
注意
- 需要在 Spring 的配置文件中把
properties文件导入。 - 如果是 Maven 项目,注意资源加载问题。
自动装配
@Autowired
-
单词读音:
欧特 万特 -
架包:
org.springframework.beans.factory.annotation.Autowired
概述
@Autowired:先通过byType查找,找不到再使用byName查找,还是查找会报异常。@Autowired可以和@Qualifier()配合使用,可以指定注入的 bean。@Autowired @Qualifier(value = "cat") private Cat cat;
要求:
- 使用
@Autowired修饰的属性 要和bean的类型一样。
属性
@Autowired(required = false):required 为 false 表示当前对象可以为 null。
示例
// java 代码
public class People {
@Autowired
private Cat a123;
}
----------------------------------------
// Spring 配置文件
<bean class="com.Test.com.pojo.Cat"/>
@Resource
- 单词读音:
瑞色四 - 架包:
javax.annotation.Resource
概述
-
@Resource默认按byName自动注入。 -
@Resource装配顺序:
① 如果同时指定了name和type,则从 Spring 上下文中找到唯一匹配的 bean 进行装配,找不到则抛出异常。- 同时指定了 name 和 type 需要确保两个都能匹配上,不然抛出异常。
② 如果指定了
name,则从上下文中查找名称(id)匹配的 bean 进行装配,找不到则抛出异常。
③ 如果指定了type,则从上下文中找到类似匹配的唯一 bean 进行装配,找不到或是找到多个,都会抛出异常。
④ 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
概述
@Resource:Java 自带的注解@Resource:先通过byName查找,查找不到再通过byType查找,还是查找会报异常。
要求:
- 使用
@Resource修饰的属性名 要和beanId一样。
属性
@Resource(name = "beanId"):通过beanId指定要注入的 bean。
示例
// java 代码
public class People {
@Resource
private Cat a123;
}
----------------------------------------
// Spring 配置文件
<bean id="a123" class="com.Test.com.pojo.Cat"/>
返回指格式转换
@ResponseBody
- 单词读音:
瑞斯剖四 包地
概述
@ResponseBody 注解的作用是将 @Controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入 Response 对象的 body 区,通常用来返回 JSON对象 或 XML。
示例
@Controller
public class BooksController {
@RequestMapping("/hello")
@ResponseBody
public String index(){
return "hello";
}
}
URL 映射
@RequestMapping
- 单词读音:
瑞快斯特 麦拼
概述
在 SpringMVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理那些 URL 请求,相当于 Servlet 中在 web.xml 中配置
示例
@Controller
public class BooksController {
// 接收 /hello 请求
@RequestMapping("/hello")
public String index(){
return "hello";
}
}
其它
@AliasFor
- 单词读音:
A列斯 f
概述
@AliasFor可以定义一个注解中的两个属性互为别名。
示范
@ComponentScan注解中的两个属性。
public @interface ComponentScan {
@AliasFor("basePackages")
String[] value() default {};
@AliasFor("value")
String[] basePackages() default {};
}
@Bean
概述
- 把类注入到 IOC 容器中。
- 相比于
@Service、@Component等注解注解 更灵活。
示例
// 通过传入的值来选择,要实例化那个 实现类 的对象。
@Bean
public Service add(Integer status){
switch (status){
case 1: return new Service01();
case 2: return new Service02();
default: return new Service03(); }
}

浙公网安备 33010602011771号