Spring入门(二)
Spring表达式语言(简称SpEL):是一个支持运行时查询和操作图的强大的表达式语言
语法类似EL:SpEL使用${...}作为界定符,所有在大括号中的字符都将被认为是SpEL
通过SpEL可以实现:
通过bean的id对bean进行引用
调用方法以及引用方法中的属性
计算表达式的值
正则表达式的匹配
SpringIOC容器对Bean的生命周期进行管理的过程:
通过构造器或工厂方法创建Bean 实例
为Bean的属性设置值和对其他Bean的引用
调用Bean的初始化方法
Bean可以使用了
当容器关闭时,调用Bean的销毁方法
在Bean的声明里设置init-method和destroy-method属性,为Bean指定初始化和销毁方法
Bean后置处理器允许在调用初始化方法前后对Bean进行额外的处理
Bean后置处理器对IOC容器里所有的Bean实例逐一处理。而非单一实例。
实现方法:
创建一个实现某个java接口的类,实现其中的两个方法
在Spring IOC中配置Bean
通过工厂方式配置bean
静态工厂方法:直接调用某一个类的静态方法就可以返回bean的实例
class属性:指向静态工厂方法的全类名
factory-method:指向静态工厂方法的名字
constructor-arg:如果工厂方法需要传入参数,则使用
实例工厂方法:实例工厂的方法,即先需要创建工厂本身,再调用工厂的实例方法
factory-bean属性:指向实例工厂方法的bean
factory-method:指向静态工厂方法的名字
constructor-arg:如果工厂方法需要传入参数,则使用
通过FactoryBean配置Bean
自定义的FactoryBean需要实现FactoryBean接口
在配置文件中,通过FactoryBean来配置Bean的
class:指向FactoryBean的全类名
property:配置FactoryBean的属性
但实际返回的却是FactoryBean的getObject()方法返回的实例
通过注解配置bean
Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件
特定组件包括:
@Component:基本注解,标识了一个受Spring管理的组件
@Responsitary:标识持久层组件
@Service:标识服务层(业务层)组件
@Controller:标识表示层组件
Spring有默认的命名策略
也可以在注解中通过value属性标识组件的名称
context:exclude-filter 子节点排除哪些指定表达式的组件
context:include-fiter 子节点指定包含哪些表达式的组件,该子节点需要use-default-fiters配合使用
指定Spring容器扫描的包:
<context:component-scan base-package="包名">Spring会扫描这个基类包里及其子包里的所有类
<context:component-scan>元素还会自动注册AutowiredAnnotationBeanPostProcessor实例,该实例可以自动装配具有@Autowired和@Resourse、@Inject注解的属性