使用注解给属性赋值:
给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;
第五种:
将服务类的公共接口设置为泛型:

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


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

测试方法:

输出结果:

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