1. 别名
2. bean的配置
别名的第二种,可支持多个别名,空格,逗号,分号,都可以
3. 导入
一般用于团队开发使用,可将多个配置文件导入,合并为一个
applicationcontext.xml
4. 依赖注入
4.1 构造器注入
4.2 setter注入【重点】
依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性由容器来注入
4.3 其他方式注入
5. bean的作用域
1. singleton单例模式
spring默认机制,get的时候都是一个实例对象
不会浪费资源,但是并发的时候会有问题,单线程使用
2. prototype原型模式
每次从容器中get的时候,都会产生一个新对象
浪费资源,多线程使用
3. request,session,application只在web开发中使用
6. bean的自动装配
自动装配是spring满足bean依赖的一种方式
spring会在上下文中自动寻找bean,并给bean装配属性
spring有三种方式装配:
1. 在xml中显式配置
2. 在java中显式配置
3. 隐式自动装配--重要
1. byName自动装配
会自动在容器上下文中查找和自己对象set方法后面的值对应的beanid,保证所有bean的id唯一,并且要保障这个id和自动注入属性的set方法的值一致
2. byType
会自动在容器上下文中查找和自己对象set方法后面的值类型对应的beanid,保证类型全局唯一,bean id不用命名就可以装配
保证bean的class唯一,并且bean和自动注入的属性的类型一致
3. 使用注解自动装配
使用注解须知:
3.1 导入约束
3.2 配置注解的支持
3.3 @Autowired 直接在属性上是使用即可,此时可忽略set方法(前提是这个自动装配的属性在IOC-spring容器中存在,且符合名字byname)
也可在set方法中使用
科普:
@nullable 标记了这个注解,说明这个字段可以为null
@Autowired(required=false) 说明这个对象可以为null,否则不允许为空
@Qualified 通过它来显式的指定
如果自动装配无法通过一个注解(@Autowired)完成的时候,可以使用@Qualifier(value="xxx")指定一个唯一的bean对象注入
@Resource注解 java装配
@Resource和@Autowired的区别
都可以自动装配,都可以放在属性字段上
@autowired是通过bytype的方式实现,必须要求这个对象存在,不然就空指针了【常用】
@Resource是通过byname的方式实现, 如果找不到名字,则通过bytype实现,都找不到的情况下就报错【常用】
执行顺序不同,@autowired是通过bytype的方式实现 @Resource是通过byname的方式实现