目录
P命名空间
为了简化 XML文件的配置,越来越多的XML文件采用属性而非子元素配置信息。p命名空间可以通过<bean>元素属性的方式配置Bean的属性。
XML文件中Bean的自动装配
Spring IOC容器可以自动装配Bean,只需要在<bean>的autowire属性里指定自动装配的模式。
byType:根据类型自动装配,缺点是当ioc中有多个类型一致的Bean,Spring无法判断哪个Bean是最合适该属性的,不能执行自动装配。
byName:根据名称自动装配,必须将目标Bean的名称和属性名设置的完全相同
自动装配的缺点:
1.autowire属性进行自动装配的时候会装配所有Bean的属性,不够灵活
2.autowire属性要么根据类型自动装配,要么根据名称自动装配,不能二者兼而有之。
3.实际项目中很少用自动装配功能,因为清晰的配置文档比自动装配更有说服力。
继承Bean配置
Spring允许继承bean的配置。子Bean从父Bean中继承配置,包括Bean的属性配置。 子bean可以覆盖父bean。父Bean可以设置为模板,通过设置<bean>的abstract属性为true。并不是<bean>元素里的所有属性都会被继承。
依赖Bean配置
Spring允许用户通过depends-on属性设置Bean前置依赖的Bean,如果前置依赖于多个Bean,则可以通过逗号,空格的方式配置Bean的名称。
Spring表达式语言:SpEL
即Spring表达式语言,是一个支持运行时查询和操作对象图的强大的表达式语言。语法使用#{...}作为定界符,所有在大括号中的字符都被认为时SpEL。SpEL为bean的属性进行动态赋值提供了便利
扫描组件
Spring能够从classpath下自动扫描,侦测和实例化居右特定注解的组件。
特定组件包括:
@Component:基本注解,标识了一个受Spring管理的组件
@Respository:标识持久层组件
@Service:标识服务层(业务层)组件
@Controller:标识表现层组件
AOP简介
即面向切面编程。主要编程对象是切面,而切面模块化横切关注点。
AOP编程中仍需要定义公共功能,但是可以明确的定义这个功能在哪里,以什么方式应用,并且不必修改受影响的类,这样一来横切关注点就被模块化到特殊的对象(切面)里。
AOP的好处:1.每个事物逻辑位于一个位置,代码不分散,便于维护和升级。2.业务模块更简洁,只包含核心业务代码。
AOP术语
切面:横切关注点被模块化的特殊对象。
通知:切面必须要完成的工作。
目标:被通知的对象
代理:向目标对象应用通知之后创建的对象
连接点:程序执行的某个特定位置
切点:通过切点定义到连接点
连接点和切点的比较:连接点好比数据库中的记录,切点相当于查询条件。