上一次讲到了Spring通过setter访问器实现了对属性的赋值,这种方法叫设值注入,spring还提供了构造注入。
1.举个列子就是当属性的类型是某个类的时候,以构造注入的方式使用<constructor-arg>,这个元素表示构造方法的一个参数,
使用时不区分顺序,为了区分可以使用index属性指定索引,位置从0开始。使用type指定参数类型,避免字符串和基本数据类型混淆。构造注入时效性好,但是不够灵活。
设置注入时效性不好,但是比较灵活,这两种方式根据自身情况来选择。
2.p命名空间实现属性注入,他的特点是使用bean的属性,而不是子元素的形式配置bean,简化了bean的配置。
其中还有p:属性名-ref=“bean的id”
3.注入不同类型
1.注入直接量除了使用属性还可以使用<value>子元素
2.引用其他bean组件使用<ref>子元素
3.注入集合类型属性
对于list或数组使用<list>标签
对于map类型有<map>标签其下还有其子标签<entry><key><value>
对于properties类型属性使用<props>,它的键值通常都是字符串类型。
5.注入null和空字符串
<value></value>注入空字符串,<null/>注入null值。
3.使用注解
@Component("user")的作用和
等效。
出了它spring还提供了3个特殊的注解:
@repository:用于标注DAO类
@Service:用于标注业务类
@controller:用于标注控制器类
4.使用注解实现bean组件装配
resource 和 autowired的作用是一样的,resource根据字段名进行注入。
然后就是这样定义好bean之后开始使用注解配置信息启动spring容器,
使用它进行扫包,多个包用逗号隔开,spring会扫描这些包中的类。
AspectJ是一个面向切面框架,他扩展了java语言,定义了aop语法,能够在编译器提供代码的织入。
spring通过集成AspectJ实现了注解方式定义切面。
使用注解来配置切面,使用注解切实现日志切面为列子:
使用@aspectJ定义切面。再在配置文件中启动注解支持
这些就是一些初步的IOC和AOP的扩展使用。