首先了解Spring是什么,Spring对于程序员的意义不亚于春天来了,所以取了一个这么有春意的名字。
Spring是一个开源框架,它的作用是什么?降低java开发复杂性--简化java开发,先看下Spring的4种关键策略
1.基于POJO的轻量级和最小侵入性编程(spring核心包才1M,对容器依赖越小,越轻量,EJB启动消耗大量内存资源)
2.通过依赖注入和面向接口实现松耦合
3.基于切面和惯例进行声明式编程
4.通过切面和模板减少样板式代码
【DI依赖注入】:Spring的核心功能,具体作用是一个应用通常会有多个类,这些类之间的协作会行程错综复杂的关系,导致高度耦合和难以测试的代码。
A类和B类的依赖关系将被注入到第三方管理,这样在代码中可以实现低耦合。依赖注入有两种方式:“构造注入”,“设值注入”
构造注入:
public class BraveKnight {
private Quest quest;
public BraveKnight(Quest quest){
this.quest=quest;
}
public void embarkonQuest(){
}
}
【tips】感觉了解spring的关键在于了解AOP和依赖注入。学号使用各种注解就是成功的关键。最近从android转后台,还好都是Java操作,感觉自己比较害怕学习新事物,python,php,go,R语言一概都不怎么接触,虽然语言只是工具,一通百通。但是还是不习惯接触新事物。
话不多说,我们看下Spring容器解析配置元数据进行bean初始化,配置和管理依赖。配置元数据指的是xml配置,注解配置,java配置。
声明Bean注解:
@Component @Repository @Controller @Service
注入Bean的注解
@Autowired @Inject @Resource
使用方式如下:
package com.rola.springlearn1.service;
import org.springframework.stereotype.Service;
@Service
public class LoginService {
}
@Autowired只需声明,spring会帮助实例化化。
简单说明一下
不需要
new一个,通常如果我们没有分配堆空间,会显示空指针异常,这种会避免了这个问题。
【关于切面AOP】
1.使用@Aspect声明是一个切面
2.@After @Before @Around 定义建议,可以直接将拦截规则作为参数,例如在验证登录密码什么之前,先加密密码等,就可以使用@After这样的注解。
3.使用pointcut专门做拦截然后在2之处调用
4.JoinPoint
这些应用会在之后注解讲解一一提到并应用。