spring中的注解如何实现降低耦合度

spring中,降低耦合度的关键在于将bean的依赖关系抽取出来的环节,而不在于将bean的依赖关系放在哪里的环节(配置文件?或注解?)

 

1 将基于实现类的耦合变成基于接口的耦合,可以避免硬编码所造成的过度程序耦合,而接下来需要解决的问题就是,如何确定该接口的实现类。

 

2 ioc控制反转,就是将某一接口的具体实现类的控制从调用类中移除,转交给第三方(也就是spring容器)

 

 

关于springaop

1 在业务系统里除了要实现业务功能之外,还要实现如权限拦截、性能监控、事务管理等非业务功能。

通常的作法是非业务的代码穿插在业务代码中,从而导致了业务组件与非业务组件的耦合。

 

2 aop面向切面编程,就是将这些分散在各个业务逻辑代码中的非业务代码,通过横向切割的方式抽取到一个独立的模块中,从而实现业务组件与非业务组件的解耦。

 

 

定义bean的三种途径

基于XMLbean定义

基于注解的bean定义@Component:当对组件的层次难以定位的时候使用这个注解

@Controller:表示控制层的组件

@Service:表示业务逻辑层的组件

@Repository:表示数据访问层的组件

基于Java类的bean定义(需要提供setter方法)

Spring提供了五种自动装配的类型

no:顾名思义, 显式指明不使用Spring的自动装配功能

byName:根据属性和组件的名称匹配关系来实现bean的自动装配

byType:根据属性和组件的类型匹配关系来实现bean的自动装配,有多个适合类型的对象时装配失败

constructor:与byType类似是根据类型进行自动装配,但是要求待装配的bean有相应的构造函数

autodetect:利用Spring的自省机制判断使用byType或是constructor装配

@Resource和@Autowired的区别。@Resource默认是使用byName进行装配,@Autowired默认使用byType进行装配。

 

Spring中的prototype类型的bean的销毁是有用户自己来销毁。Spring只负责创建实例。

 

 

Spring的事务管理:http://www.mamicode.com/info-detail-1248286.html

 

 

 

 

Spring操作数据库的几种方式