Spring 使用注解的对象读取和存储

在 Spring 中想要更简单的存储和读取对象的核⼼是使⽤注解,也就是我们接下来要学习 Spring 中的相关注解,来存储和读取 Bean 对象。

1.存储 Bean 对象

1.1 前置⼯作:配置扫描路径
我们需要配置⼀下存储对象的扫描包路径,只有被配置的包下的所有类,添加了注解才能被正确的识别并保存到 Spring 中。
1.2 添加注解存储 Bean 对象
想要将对象存储在 Spring 中,有两种注解类型可以实现:
1. 类注解:@Controller、@Service、@Repository、@Component、@Configuration。
上述类注解都可以将对象注入到spring当中,但是它们的用途不同,程序员根据类注解,就可以了解类的用途.
@Controller:表示的是业务逻辑层;
@Servie:服务层;
@Repository:持久层;
@Configuration:配置层
通常我们 bean 使⽤的都是标准的⼤驼峰命名,⽽读取的时候⾸字⺟⼩写就可以获取到 bean 了,然⽽,当我们⾸字⺟和第⼆个字⺟都是⼤写时,就不能正常读取到 bean 了

2. ⽅法注解:@Bean

在 Spring 框架的设计中,⽅法注解 @Bean 要配合类注解才能将对象正常的存储到 Spring 容器中
@Component
public class Users {
    @Bean(name = {"u1"})//重命名
    public User user1() {
        User user = new User();
        user.setId(1);
        user.setName("Java");
        return user;
    }
}

2.获取 Bean 对象(对象装配)

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

2.1 属性注⼊
属性注⼊是使⽤ @Autowired 实现的(相当于给属性赋值),将 Service 类注⼊到 Controller 类中。
2.2 构造⽅法注⼊
构造⽅法注⼊是在类的构造⽅法中实现注⼊,如果只有⼀个构造⽅法,那么 @Autowired 注解可以省略
 @Autowired
 public UserController2(UserService userService) {
     this.userService = userService;
 }
2.3 Setter 注⼊
Setter 注⼊和属性的 Setter ⽅法实现类似,只不过在设置 set ⽅法的时候需要加上 @Autowired 注
解        
2.4 @Resource:另⼀种注⼊关键字
除了可以使⽤ @Autowired 关键字之外,我们还可以使⽤ @Resource 进⾏注⼊
@Autowired 和 @Resource 的区别
    (1)出身不同:@Autowired 来⾃于 Spring,⽽ @Resource 来⾃于 JDK 的注解;
    (2)使⽤时设置的参数不同:相⽐于 @Autowired 来说,@Resource ⽀持更多的参数设置,例如
    name 设置,根据名称获取 Bean。
    (3)@Autowired 可⽤于 Setter 注⼊、构造函数注⼊和属性注⼊,⽽ @Resource 只能⽤于               Setter注 ⼊和属性注⼊,不能⽤于构造函数注⼊。

2.5 同⼀类型多个 Bean 
解决同⼀个类型,多个 bean 的解决⽅案有以下两个:
(1)使⽤ @Resource(name="user1") 定义。
@Controller
class UserController4 {
     // 注⼊
     @Resource(name = "user1")
     private User user;
     public User getUser() {
         return user;
     }
}
(2)使⽤ @Qualifier 注解定义名称。
@Controller
public class UserController5 {
    //注⼊
    @Autowired
    @Qualifier(value = "user2")
    private User user;
    public User getUser() {
    return user;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值