依赖注入(Dependency injection)能够让相互协作的软件组件保持松散耦合,而面向切面(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。
依赖注入(Dependency injection)
采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。(引自百度百科)
Spring通过装配bean来实现依赖注入,如何装配bean?
1,声明Bean
2,构造器注入和Setter方法注入
3,装配Bean(三种主要的装配机制)
4,控制Bean的创建和销毁
(1)在XML中进行显式配置
(2)在Java中进行显式配置
(3)隐式的bean发现机制和自动装配(开发常用,下面只介绍此方法)
–步骤1,XML配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- soundsystem 为扫描包的名称-->
<context:component-scan base-package="soundsystem" />
</beans>
–步骤1.2,Java配置
@Configuration
@ComponentScan(basePackages={"soundsystem"})
public class CDPlayerConfig {
}
–步骤2,用注解(@Component @Autowired)来声明bean
面向切面(aspect-oriented programming,AOP)
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。在Spring中提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
下面介绍基于XML配置开发AspectJ的使用