spring 注解的 非引用类型属性注入
名称: @Value
类型:属性注解、方法注解
位置:属性定义上方,方法定义上方
作用:设置对应属性的值或对方法进行传参
范例:
@valie ("(idbe, usernane}")
private string uaezname;
说明:
value值支持非引用类型数据
value值支持读取properties文件中的属性值,通过类属性将properties中数据传入类中
value值支持SpFL,使用SpEL可以使H@Value注入引用类型数据
@value注解如果添加在属性上方,可以省略set方法(set方法的目的是为属性赋值)
相关属性:value (默认) :定义对应的属性值或参数值
@Value("4")
private int num ;
@Value("itheima")
private String version;
就像这样,就是在给这个变量进行赋值了
@value也可以写在他的set方法上,作用也是在给这个变量赋值
写了@value就可以不写这个变量的set方法也可以,@value就取代了之前的set方法
spring 注解的 引用类型属性注入
名称: @Autowired, @Qualifier
类型:属性注解、方法注解
位置:属性定义上方,方法定义上方
作用:设置对应属性的对象或对方法进行引用类型传参
范例
@autowired (required = false)
@Qualitier(“userDao”)
private UserDao userDao;
说明:
@Autowired默认按类型装配,指定@Qualifier后可以指定自动装配的bean的id
相关属性: required:定义该属性是否允许为nulll
@Autowired
@Qualifier("userDao")
private UserDao userDao;
@Autowired
private BookDao bookDao;
@Autowired 加上这个注解就不用写他的set方法
@Autowired 是自动装配的意思,他作用的成员变量的名称,与@component的id名称一致才能被@component作用的类使用上
@Qualifier(“userDao”)这个是用来指定bean的名称,也就是bean的引用类型id属性
@Primary这个注解是提升类的加载优先级的,写了@Primary就会被spring优先加载,这个是写在类的顶上的,@Primary只能用一次,就是只能用一个类来加上这个注解,
否则控制台会报错
"available: more than one ‘primary’ bean found among candidates: [bookDaoImpl, bookDaoImp12]
自动装配时先按类型装配,类型相同的按id装配