随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

使用注解给属性赋值:

给User类创建一个name属性并使用@Value()注解赋值:

 

 测试方法:

 

 结果:

 

 成功赋值!

 

使用注解赋值除了可以直接赋值以外,还可以使用${}#{}

 其中#{}中写SpEL表达式:

创建资源文件:

 

 然后在xml中配置(引用外部资源文件):

 

 然后是User类中填写:

 

 

 

 

 新建一个Bean;

 

 在User类中获取name:

 

 

 

 结果:

 

 

属性值的自动注入:

在service层创建方法:

 

 在控制层创建方法:

 

 并在属性上添加注解@Autowired进行自动注入:

 

 dao中的方法:

 

 结果:

使用@Autowired来实现自动注入
     bytype     byname
    * 默认优先根据类型去匹配
    * 如果匹配到多个类型则会按照名字匹配
    * 如果名又没有匹配到则会报错 
            1.可以去修改属性的名字对应bean的名字:userServiceImpl
            2.可以去修改Bean的名字对应属性的名字:@Service("userService")
     3.可以通过@Qualifier设置属性的类名字
            4.可以通过@Primary设置其中一个Bean为主要的自动注入Bean: @Primary
            5.使用泛型作为自动注入的限定符

  

当有两个Bean都实现了同一个接口,此时按照类型查找Bean就会报错,那么就有三种方法解决:

第一种:

 

 第二种:

 

 第三种:

首先UserServiceImpl的方法中输出:

 

 RoleServiceImpl中输出:

 

 使用类名字:

 

 虽然属性是roleServiceImpl,但是输出结果:

 

 使用的是UserServiceImpl中的方法;

 

第四种:

 

 

 

 测试:

 

 输出结果:

 

 发现不会报错,使用的是设置的主要Bean;

 

第五种:

将服务类的公共接口设置为泛型:

 

 并在实现类中指定泛型的类型:

 

 

 

 然后在控制层获取的时候:

 

 测试方法:

 

 输出结果:

 

 

这里使用泛型,那么就相当于需要在使用泛型方法之前将泛型指定为一个类,那么就相当于在自动注入的时候已经指定了类,自然就能成功注入。

 

posted on 2022-05-29 23:25  时间完全不够用啊  阅读(253)  评论(0编辑  收藏  举报