Spring是一个能够整合其它框架的容器,核心是AOP和IOC
AOP:面向切面编程
IOC(Inversion of Controller):控制反转,这是一种思想,由Spring容器进行对象的创建和依赖的注入,当我们使用时可以直接在容器中取出。
正转:由程序员进行对象的创建和依赖注入 。
Student s = new Student();
s.setName("aaaa");
Spring常用注解
@Controller
专门用来创建控制层对象(Servlet),这种对象可以接受用户的请求,可以直接返回给客户端。
@Component
可以创建任意对象,创建对象默认名称是类的驼峰命名法。
也可以指定对象的名称@Component("指定名称")
@Service
专门用来创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕后的结果返回给控制层
@Repository
专门用来创建数据访问层的对象,负责数据库中数据的增删改差。
@Value
用来给简单类型的注入值-------(简单类型)8种基本类型+String
8种基本类型:整数类型(byte int short long)
浮点类型(float double)
boolean
char
@Autowired(Spring)
使用类型注入值,从整个Bean工厂中搜寻同源类型的对象进行注入。
同源类型:1.类型完全一致
2.需要注入的类型与Bean中类型是父子类
3.需要注入的类型与Bean中类型是接口实现类
注:在有父子类情况下,使用按类型注入,就意味着有多个可注入的对象,此时按照名称进行二次筛选,选中与被注入对象相同名称的对象进行注入 。
@Autowired
@Qualifier("名称")
使用名称注入值,从整个Bean工厂中搜索相同名称的对象进行注入。
注:存在父子类的情况下,直接按照名称进行注入。
@Resource(JDK)
默认是按照名称进行注入
既不指定name,也不指定type,则自动按照name进行查找,如果没有查找到合适的Bean,则回退为原始类型进行查找,如果找到就进行注入。
AOP的实现及常用术语
1. 切面:重复的,公共的,通用的功能。例如:日志,事物,权限。
2. 连接点:就是目标方法,因为在目标方法中要实现目标方法的功能与切面功能。
3. 切入点(Pointcut):指定切入的位置,多个连接点构成切入点,切入点可以是一个目标方法,可以是类中的所有方法,也可以是某个包下的所有类中的方法。
4. 目标对象:操作谁就是谁。
5. 通知(Advice):来指定切入的时机,是在目标方法执行前还是执行后,还是出错时,还是环绕目标方法切入切面功能。
AspectJ
AspectJ 是一个优秀面向切面的框架,它扩展了 Java 语言,提供了强大的切面实现。它因为是基于java语言开发的。
前置通知@Before
后置通知@AfterReturning
环绕通知@Around
最终通知@After
定义切入点@Pointcut