java-ee Spring更简单的读取和存储对象

原始的存储bean对象

更简单的存储bean对象

1.配置扫描路径:配置一下存储对象的扫描包路径,只有被配置的包下的所有类,添加了注解下能被正确的识别并保存到spring中

如下,若此时APPUser、User这两个类加了注解,就行保存到spring中

2.方法:

①类注解:将类注解添加在某个类上

五大类注解:@Controller、@Service、@Repository、@Component、@Configuration

以Controller为例子,其他的类注解也是一样的

在启动类中,将如何进行获取bean对象呢?

Bean的命名规则如果类名的首字母是大写,第二个字母是小写,那么getBean里面的名称就是类名的第一个字母小写,其余字母大小写不变;若类名的首字母是大写,第二个字母也是大写,那个getBean里面的名称就是原类名。

User类

APPUser类

原因:查询Spring关于bean存储时的命名规则

查询:得到当前这个类,可以解释bean存储时的命名规则

这个方法里面就解释了bean的命名规则,并且这个方法使用的是JDK中的

②方法注解:将注解(@Bean)添加在某个方法上

@Bean注解必须搭配类注解才能将对象正常的存储到Spring中

在启动类中获取bean对象

此时getBean里面的名称默认等于方法名

重命名Bean:通过设置name属性给Bean对象进行重命名操作

重命名的name是一个数组,一个bean可以有多个名字

当一个类中多个Bean使用相同的名字,程序并不会报错,但是第一个Bean之后的对象不会在被存储到容器中(即按照代码的先后顺序执行)

输出结果为:

调换两个bean的代码顺序:

输出结果为:

获取Bean对象

获取bean对象也叫对象装配,是把对象取出来放到某个类中,有时候也叫对象注入

①属性注入:使用@Autowired

优点:使用简单

缺点:1.无法注入finnal修饰的变量;2.通用性问题,只适用于Ioc容器;3.更容易违背单一设计原则

例子:将Service类注入到Controller中

②Setter注入(UserController代码一样、启动类代码类似)

注意:Setter注入即和属性的Setter方法一样。在使用时必须在前面加上@Autowired

优点:符合单一设计原则

缺点:1.无法注入一个finnal修饰的变量;2.setter注入的对象可以被修改

③ 使用构造方法注入(UserController代码一样、启动类代码类似)

注意:如果只有一个构造方法时,@Autowired可以省略

优点:1.可以注入一个finnal修饰的变量;2.注入的对象是不可变的,因为构造方法只加载一次;3.构造方法注入可以保证对象完全初始化;4.通用性更好

缺点:写法比属性注入麻烦

②使用@Resource注入

@Autowired和@Resource的区别

①@Autowired来自spring,而@Resource来自于JDK

②与@Autowired来说,@Resource支持更多的参数设置

③@Autowired可以用于属性注入、setter注入和构造方法注入,而@Resource只用于属性注入和setter注入,不能用于构造方法注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值