控制反转(Inversion of Control-IoC)和依赖注入(dependency injection-DI)
IoC和DI在Spring环境下是同等概念,控制反转是通过依赖注入实现的,所谓依赖注入指的是容器,负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决依赖。依赖注入的主要目的是为了解耦,体现了一种“组合”的概念,如果使用继承父类的方式,子类将与父类耦合,而组合另外一个类择使耦合度大大降低。
Spring IoC容器(ApplicationContext)负责创建Bean,并通过容器将功能类Bean注入到需要的bean中,Spring提供XML、注解、Java配置、groovy配置实现Bean的创建和注入,统称为配置元数据。所谓元数据即描述数据的数据,元数据本身不具备任何可执行能力,只能通过外界代码来对这些元数据进行解析后,进行操作,Spring容器解析这些配置元数据进行Bean初始化、配置和管理依赖。
声明Bean的注解:
-@Component:组件,没有明确的角色。
-@Service:在业务逻辑Service层使用。
-@Repository:在数据访问DAO层使用。
-@Controller:在展现层MVC使用。
注入Bean的注解:
-@Autowired:类型匹配注入。
-@Resource:名称匹配注入。
-@Inject:类型注入。
Java配置
Java配置通过@Configuration和@Bean来实现:
@Configuration:声明当前类是一个配置类,相当于一个Spring配置的xml文件。
@Bean:注解在方法上,声明当前方法的返回值为一个Bean。
AOP
面向切面编程,相对于OOP面向对象编程。 其实我们都是面向薪资编程的!!!
Spring AOP的存在目的就是为了解耦,AOP可以让一组类共享相同的行为,在OOP中只能通过继承类和实现接口,来使代码的耦合度增强,且类都是单继承,阻碍更多行为添加到一个类上,AOP弥补了OOP的不足。
Spring 支持AspectJ的注解式切面编程:
1、使用@Aspect声明是一个切面。
2、使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
3、其中@After、@Before、@Around参数的拦截规则为切点(PointCut),为了使切点复用,可使用@PoinCut专门定义拦截规则,让后在@After、@Before、@Around的参数中调动。
4、其中符合条件的每一个被拦截处为连接点(JoinPoint)。
Bean的Scope
Scope描述的是Spring容器如何新建Bean的实例:
1、Singleton:一个Spring容器中只有一个Bean实例,此为Spring默认配置,全容器共享一个实例。
2、Prototype:每次调用新建一个Bean实例。
3、Request:Web项目中,给每一个http request新建一个Bean实例。
4、Session:Web项目中,给每一个http session新建一个Bean实例。
5、GlobalSession:这个只在portal应用中有,给每一个global http session新建一个Bean实例。
另外,在Spring Batch中还有一个Scope是使用@StepScope。
Bean的初始化和销毁
Spring对Bean的生命周期的操作提供了支持:
1、Java配置方式:使用@Bean的initMethod和destroyMethod(相当于xml配置的init-method和destroy-method)。
2、注解方式:利用JSP-250的@PostConstruct和@PreDestroy。@PostConstruct在构造函数执行完之后执行。@PreDestroy在Bean销毁之前执行。
Profile
Profile为在不同环境下使用不同的配置提供了支持:
1、通过设定Environment的ActiveProfile来设定当前context需要使用的配置环境,在开发中使用@Profile注解类或者方法,达到在不同环境下选择实例化不同的Bean。
2、通过设定jvm的spring.profile.active参数来设置配置环境。
3、Web项目设置在Servlet的context parameter中。
事件(Application Event)
Spring的事件(Application Event)为Bean与Bean之间的消息通信提供了支持,当一个Bean处理完一个任务后,希望另外一个Bean知道并能做相应的处理,这时需要另外一个Bean监听当前Bean所发送的事件。
Spring 的事件一定要遵循如下流程:
1、自定义事件,继承ApplicationEvent。
2、定义事件监听器,实现ApplicationListener接口,并指定监听的事件类型。
3、使用容器发布事件,使用onApplicationEvent方法对消息进行接受处理。
本文详细介绍了Spring框架中的控制反转(IoC)和依赖注入(DI)的概念及其在Spring环境下的实现方式,包括元数据配置、注解使用等。此外,还探讨了面向切面编程(AOP)在Spring中的作用及其实现方法。
4461

被折叠的 条评论
为什么被折叠?



