博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原创]spring及springmvc精简版--IOC
阅读量:5165 次
发布时间:2019-06-13

本文共 4027 字,大约阅读时间需要 13 分钟。

本篇博客为自己学习spring和springmvc的一个总结。主要以代码为主,至于文字性描述理解性东西,可以自行百度。有认识不妥的地方,还望指出,相互学习。

以前很困惑spring中的一些概念,在学习过程中遇到了很都问题,目前基本解决。解决的方法:

    ① 总结Spring框架的运行流程:在框架中,程序如何运行的?流程是什么?  可以适当的参考一部分源码解析

 

    ②  理解IOC本质。因为spring是一个容器框架,所以就是用来装东西的,就像tomcat,作用服务器一样。而IOC就是spring通过主配置文件(applicationContext.xml)的相关配置,为我们程序中自动的(底层通过反射方式,反射在框架中用的很过,私底下自己也在继续的深入的研究)为程序创建我们想要的bean对象。在spring中称之为注入,而所依赖的正是applicationContext.xml的配置。

         配置方式:spring中提供了两种配置方式:基于xml方式的配置和基于注解的配置。对于前者可以实现对bean的统一的,清晰的,管理,但是需要手动的写,很麻烦(程序天生的就是为人的懒惰而服务);对于后者当然开发时候自己写的东西就少了,但是在统一管理方面稍差。凡事存在即合理。可以根据自己的需求选择自己的配置方式。

 

   ③  理解AOP。java是一种面向对象的语言。而AOP是面向切面,在我看来是面向逻辑或者业务编程,它是对一组逻辑的抽象和分配

       经典例子,很多系统都有日志。以登录为例子。常规编程流程大致如下:点击登录--->写入日志--->后台处理--->写入日志。因为我们的系统中会有很多功能逻辑代码都是如此去处理日志。假设有一天,需求改变不需要日志了。那么我们如何去处理这些已经存在于整体逻辑单元中的日志代码?无非是找到每一个使用日志的地方,逐一删除。大家可想这样的效率?代码的耦合度?

      而AOP变成。就是为了高度的解耦儿产生。它将登录的整个流程进行按照特定的,共同的业务逻辑进行切割,从而抽象出来了一组公共的逻辑单元。然后在根据不同业务模块的需求,在某些业务指定的地方将公共的业务逻辑植入其中,从而形成了一个整体的业务逻辑单元,实现某一模块功能。(这些是自己思考,总结的,刚开始接触的时候,没有理解到这点,也吃了很多闭门羹)有了这样的认识和理解,我们理解spring AOP中的一些常用的概念就很简单:

    横切关注点:哪些业务需要拦截,拦截后干什么?

          切面:若干个横切关注点的抽象结合。即:抽象出来的公共的业务逻辑单元

        连接点:需要拦截的业务。原本剩下的业务逻辑

          切入点:连接点的表达式。和通知相似。

     通知:将共同的逻辑代码植入的提示。前置,后置,异常,返回,环绕。

 

IOC:控制反转,依赖注入。配置bean

1.注入方式:setter方法注入,构造器注入,复杂类型注入

1 
2
11
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 43

 

 2.继承,模式改变,自动注入(byName,byType)

1 
2
11
12
13
14
15
16
17
18
19
20 21
22
23
24 25
29
30
31
32 33

 

 

 

3.自动扫描

1 
2
11 12
13
14 15

 

 

 

3.注解方式:举例我所接触的注解

  @component :标识为spring组件,由spring容器管理

  @Autowired:设置自动注入bean。 默认名字为与当前bean的类一致,首字母小写。

  @Service:业务层Bean。一般作用于服务层的类,dao层,service层

  @Controller:展示层Bean。一般用于控制层的类,controller层

  @Repository:应存储层Bean。一般用于model层的类

详细的可以参照: 

 

 

 

 

 

 

 

步骤:

 1.下载相应的jar包。搭建环境。本人用的是:spring-framework-4.0.0.RELEASE-dist 

 2.新建java工程:在工程的根目录新建 lib目录,将相关jar导入

           

 

3.创建bean

Goods

 

1 package com.bean; 2  3 public class Goods { 4  5     private int gid; 6     private int gprice; 7     private int gnum; 8     public int getGid() { 9         return gid;10     }11     public void setGid(int gid) {12         this.gid = gid;13     }14     public int getGprice() {15         return gprice;16     }17     public void setGprice(int gprice) {18         this.gprice = gprice;19     }20     public int getGnum() {21         return gnum;22     }23     public void setGnum(int gnum) {24         this.gnum = gnum;25     }26     27 }

 

 

 

 

 Person

1 package com.bean; 2  3 public class Person { 4  5     private String name; 6     private int age; 7     public String getName() { 8         return name; 9     }10     public void setName(String name) {11         this.name = name;12     }13     public int getAge() {14         return age;15     }16     public void setAge(int age) {17         this.age = age;18     }19     20 }

Users

1 package com.bean; 2  3 public class Users { 4  5     private int uid    ; 6     private String uname; 7     private int umoney; 8     public int getUid() { 9         return uid;10     }11     public void setUid(int uid) {12         this.uid = uid;13     }14     public String getUname() {15         return uname;16     }17     public void setUname(String uname) {18         this.uname = uname;19     }20     public int getUmoney() {21         return umoney;22     }23     public void setUmoney(int umoney) {24         this.umoney = umoney;25     }26     27 }

 

 

 

 

 

 

 

 

 

 

  

   

 

转载于:https://www.cnblogs.com/jasonHome/p/6670171.html

你可能感兴趣的文章
linux 修改ssh端口号
查看>>
Android-Layer list
查看>>
Java语言中的访问权限修饰符
查看>>
iOS9新特性之常见关键字
查看>>
codeforce好地方啊 Bear and Elections *
查看>>
破解wifi_失败
查看>>
20145332 《网络攻防》 逆向与Bof实验
查看>>
子元素设置margin-top,父元素无法将margin-top包含在父容器的原因及解决办法
查看>>
Centos服务器搭建(6)——安装JDK
查看>>
C语言_第二讲_规范以及常用数据类型
查看>>
RIP的缺点
查看>>
Unity最优化摘要
查看>>
类模板使用说明
查看>>
Redis源代码分析(一)--Redis结构解析
查看>>
Flex父子窗体相互调用
查看>>
改动网卡IP信息
查看>>
【Java】国内maven私服
查看>>
第三方开源水面波浪波形view:WaveView
查看>>
POJ 2251 Dungeon Master(3D迷宫 bfs)
查看>>
Linux查看和编辑文件
查看>>