一、了解spring

①spring是为了简化企业级开发而提出的一个开源框架,它特有的轻量级以及非侵入式特点使得其可以自由组合各个功能模块。

②spring的ioc是实现非侵入式的主要部分(主要通过配置进行依赖注入,下面在ioc中会详细提到)。

二、spring之IOC

①IOC的中文释义是控制反转或者叫依赖注入。在传统的java开发模式中,我们需要使用new来创建一个对象然后才能获取其属性或使用其方法,而spring通过工厂模式为我们创建了所需要的对象,可以直接进行取用。这就是控制反转的思想。

②这里可能会有人说,那为什么不用工厂模式而是引入了ioc这个概念呢?前面我们提到了spring的非侵入性,这是通过反射机制来实现的,已动态的方式来提供各种功能是实现其非侵入式的主要原因。如果我们单纯使用工厂类那么在功能扩充或需求改动时需要改动其核心代码。而spring通过反射配合beadFactory来实现对象的创建以及属性注入,这样就避免了重复编码工作。

三、spring之aop

①在面向对象编程(oop)中我们把所有的事物看成是一个对象,在面向切面编程(aop)中,我们关注的不在是对象了,而是切面和切点。

②如果说把所有的业务逻辑代码看做是一个面,以日志记录为例(权限控制和事务管理同上),我们就需要在n多个方法中写入日志输出的代码段(重复工作且浪费资源)。

③这里简单介绍下使用注解来实现aop的简单示例:在切面类中使用@Aspect来声明这是一个切面类、@Before来声明before为一个前置通知(后置、环绕、异常、最终通知同理)、通过excution来声明一个切点。大致如下:(Before--执行前通知,除非抛出异常才会不执行、After--执行后通知,正常执行后运行除非抛出异常、AfterThrowing--异常后运行、Around--比如方法调用前后运行、AfterRetirning--方法最终返回时运行)

public class Advice(){
@Before(value = "excution(*com.lfg.mytest.aopTest.*(..))")
public void before(){
syso("this is a before advice.")
}
}

四、spring中常用的注解

1、@Autowired:对类的成员变量、方法、构造函数进行自动装配,比如:

@Autowired private ArticleService articleService;

2、@Repository:用于标注数据访问组件,通常在dao层的实现类中使用。

3、@Service:用于标注业务层组件,通常在service层的实现类中使用。

4、@Controller:用于标注控制层组件,通常在controller层使用。

5、@RequestMapping:用于标识控制器拦截内容,通常在controller类中使用。 @RequestMapping("addOne")

6、@RequestParam:讲请求参数绑定至方法参数。@RequestParam(value="userId",defaultValue="1" Long userId)

7、@RequestBody:接收http请求的json数据并转换成java对象(springMvc中注解)

8、@ResopnseBody:讲controller类方法返回对象转化为json相应给客户(springMvc注解)

五、spring Bean的生命周期

非表字段的Spring注解 spring 非单例注入的原理_java必知必会

七、spring能帮助我们做什么

1、根据配置文件来创建以及组装对象之间的依赖关系,当这个关系发生改变是我们只需要改动配置文件即可。

2、通过面向切面编程来为我们实现无耦合的日志记录、权限管理、安全控制、性能统计。

3、非常简单的帮我们管理数据库事务,我们只需要获取连接执行sql就行,其他的都是spqing操作。本身也提供了一套jdbc访问模板(JdbcTemplate)

4、除了自身提供的一套web框架springmvc还能无缝集成其他的web框架。