• SSM框架学习之Spring学习笔记


    要掌握SSM,所学内容还是要规划一下,不建议直接开撸SSM,最好把Spring SpringMVC Mybatis各个击破

    我的学习网站:http://how2j.cn/k/ssm/ssm-tutorial/1137.html?tid=77

    Spring框架是个轻量级的Java EE框架。IOC(控制反转)、DI(依赖注入)、AOP(面向切面)是Spring的核心思想

    一、IOC/DI(控制反转/依赖注入)

    IOC(控制反转 ):就是 创建对象由以前的程序员自己new来调用,变成了交由Spring创建对象。

    和传统方式获取对象的方式不同:

    传统方式:通过new 关键字创建一个对象,比如:Person p = new Person();

    IOC方式:对象的生命周期由Spring管理,直接从Spring那里获取一个对象。控制反转 也就是 控制权原来属于程序员 现在交给了Spring

    DI(依赖注入):就是 拿到的对象的属性,已经被注入好了相关的值,直接使用即可。

    二、注入对象

    可为对象的属性注入值。

    可为对象注入值。

    例如:

    三、注解方式IOC/DI

    以上为在applicationContext.xml配置文件中直接配置。还可以用注解的方式进行配置,以简化xml的配置内容。

    在xml中添加  <context:annotation-config/>  表示  告诉Spring要用注解的方式进行配置

    例如:

    在Product对象的category属性前加上@Autowired注解

     

    除了在属性前加上@Autowired这种方式外,也可以在setCategory方法前加上@Autowired,这样来达到相同的效果

    除了@Autowired之外,@Resource也是常用的手段

    上述例子是对注入对象行为的注解,那么bean对象本身,比如Category,Product可不可以移出applicationContext.xml配置文件,也通过注解进行呢?

    比如:将下图中的内容移除xml以注解的形式配置

    删除xml中的所有配置 只添加  <context:component-scan base-package="com.how2java.pojo"/>  表示 告诉Spring,bean都放在com.how2java.pojo这个包下

    例如:

    使用@Component注解

    例如:

    四、AOP

    AOP 即 Aspect Oriented Programming 面向切面编程

    在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能

    所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务 
    所谓的周边功能,比如性能统计,日志,事务管理等等

    周边功能在Spring的面向切面编程AOP思想里,即被定义为切面 
    在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发 
    然后把切面功能和核心业务功能 "编织" 在一起,这就叫AOP

    准备业务类 ProductService

    准备日志切面 LoggerAspect

    配置 applicationContext.xml

    execution(* com.how2java.service.ProductService.*(..))

    这表示对满足如下条件的方法调用,进行切面操作:
    * 返回任意类型
    com.how2java.service.ProductService.* 包名以 com.how2java.service.ProductService 开头的类的任意方法
    (..) 参数是任意数量和类型

    测试

    通过配置的方式,把切面和核心业务类编制在了一起。

    运行测试,可以发现在编织之后,业务方法运行之前和之后分别会打印日志

     五、注解方式AOP

    上面配置AOP方式为xml  也可以用注解的方式配置AOP

    使用@Component("s") 注解ProductService 类

    注解配置切面

    @Aspect 注解表示这是一个切面
    @Component 表示这是一个bean,由Spring进行管理
    @Around(value = "execution(* com.how2java.service.ProductService.*(..))") 表示对com.how2java.service.ProductService 这个类中的所有方法进行切面操作

    配置xml

     

    代码改变世界
  • 相关阅读:
    OpenCV 在android studio 中的用法
    Python中用requests处理cookies的3种方法
    Jmeter利用正则表达式提取器提取登录cookie供下一步使用
    vue项目 el-tree的界面自定义 实现增删改查操作
    PostgreSQL高可用方案-patroni+etcd+vipmanager(二)
    PostgreSQL高可用方案-patroni+etcd+vipmanager(一)
    【转载】Linux下PostgreSQL主备环境搭建和切换
    一些自定义 PostgreSQL 随机数据生成器 —— Some self-defined PostgreSQL random data generators
    ClickHouse 简单使用(六)
    ClickHouse 简单使用(五)
  • 原文地址:https://www.cnblogs.com/xiaolangzhong/p/9090225.html
Copyright © 2020-2023  润新知