前言
在 Spring 中想要更简单的存储和读取对象的核心是使用注解,而在使用注解之前一定要配置好扫描文件
一、五大类注解
1.@Controller、@Service、@Repository、@Component、@Configuration。
可以看到,不管使用的是@Controller还是@Service,都能在Spring中获取到。
我们来看看各个注解的源码就知道了
我们发现其实每个注解都使用了@Component注解,相当我们Java中的继承关系,其他四个注解都相当于@Component的子类。
2、既然功能相同为什么还要有这么多注解?
这和为什么每个省/市都有⾃⼰的⻋牌号是⼀样的,这样做的好处除了可以节约号码之外,更重要的作⽤是可以直观的标识⼀辆⻋的归属地。
那么为什么需要怎么多的类注解也是相同的原因,就是让程序员看到类注解之后,就能直接了解当前类的⽤途,⽐如:
@Controller:表示的是业务逻辑层;
@Servie:服务层;
@Repository:持久层;
@Configuration:配置层。
@Component:组件层
3、Bean的命名规则
通过上⾯示例,我们可以看出,通常我们 bean 使⽤的都是标准的⼤驼峰命名,⽽读取的时候⾸字⺟⼩写就可以获取到 bean 了,如下图所示:
然⽽,当我们⾸字⺟和第⼆个字⺟都是⼤写时,就不能正常读取到 bean 了,如下图所示:
而将参数改成UContrller后就能正常运行:
这是因为Spring对Bean有自己的一套命名规则,我们可以来看源码:
二、方法注解
类注解是添加到某个类上的,⽽⽅法注解是放到某个⽅法上的,如以下代码的实现:
在 Spring 框架的设计中,⽅法注解 @Bean 要配合类注解才能将对象正常的存储到 Spring 容器中,如
@Controller
public class MethodContrller {
@Bean("m1")
public User method(){
User user = new User();
user.age = 2;
return user;
}
}
@Bean()括号中的是关于bean的重命名数组,不写的话就是该方法的名字,运行结果代码如下图: