• Spring学习


    记录自己的学习

    IOC

     1 //正常程序 伪代码
     2 Process p = new Process()
     3 Thread t = new thread()
     4 p.setMainThread(t)
     5 p.run()
     6 
     7 //IOC伪代码
     8 IOC ioc = new IOC()
     9 ioc.add(Process.class)
    10 ioc.add(Thread.class)
    11 Process p = ioc.get(Process.class)
    12 p.run()

     AOP

     

    如何理解切面编程

    平面刀切的那个平面

    切点刀切的那个位置

    举例:肉夹馍

     java中的比喻成一个(切点是方法)

    切面方法的前和后也就是肉夹馍切开的两片

    代码也就是

    面向切面编程理解:

    代码切入到的一个指定方法指定位置的一个编程思想。

    模块层级关系: 

    view发出请求——》controller响应请求——》service操作数据——》model

    model——》service处理完并返回——》controller得到返回结果,将数据返回给view——》view输出给浏览器

    aop将作为一个通用的模块进行使用

    ------------------------------------------------------------------------------------------------------------------------------------

     引入的Spring Boot依赖集成了一个Spring框架的一个开发套件

     分析启动类WebApplication

     SpringApplication.run是核心ioc的初始化及其它的工作,在ioc初始化工作完成之后将会收到WebApplication.class的信息,

    同时因为@SpringBootApplication()的注解ioc容器将开启对demo包下面的以及子包的所有类的扫描,通过扫描ioc容器会发现许多需要用到的类,

    并将这些类注入进去。

     

    controller

     因为@Controlle注解UserController将被注入到ioc容器中

    UserController在初始化之后会有一个依赖通过@Autowrired注解声明的一个依赖,这个依赖将由ioc容器往其中注入,注入的是userService的实现层userServiceImpl,

    userServiceImpl层有一个@Service()注解,因为这个注解UserServiceImpl将会注入到ioc容器中,最终ioc容器可以初始化UserServiceImpl的对象,将这个对象注入到Controller中,

    这样在ioc容器中就能拿到一个完整的UserController对象(依赖也就自动装配好了),这就是ioc容器的作用。

     

     

    理解记忆:

    ioc——比作容器(通过注入的方式)

    @Autowrired注解——比作Controller层到Service层搬运的小兵

    @Service注解——比作ServiceImpl层到Service

    Controller层中类上面的@Autowrired小兵将由ioc容器往其中注入,注入的是userService的实现层userServiceImpl,

    Service层中类上面的@Service()小兵将ServiceImpl将会注入到ioc容器中,最终ioc容器可以初始化UserServiceImpl的对象,

    将这个对象注入到Controller中

     -------------------------------------------------------------------------------------------------------------------------------------------------------

    AOP下面的包

    LogAspect类

     @Pointcut()为切点注解

    因为@Pointcut()注解,log代表一个切点

     @Pointcut()中的public * demo.controller.*.*(..)告诉了所有切点的位置,demo中所有类,所有公开的方法作为一个切点,进行一个切面编程

    @Before()注解,是定义了一个切面

    @Before(“log()”)中@Before()注解是在log切点方法之前

     

     

    web mvc架构的使用

    视图层是将视图转成一个包含真实数据的页面,返回给浏览器

    controller层对

    ------------------------------------------------------------------------------

     ----------------------------------------------------------------

    视频地址:https://www.bilibili.com/video/av24262882

  • 相关阅读:
    jquery中$.get()提交和$.post()提交有区别吗?
    src = "security/afafsff/?ip=123.4.56.78&id=45",请写一段代码用正则匹配出ip
    python如何捕获异常
    平衡点问题
    支配点问题:
    python程序中文输出问题怎么解决? 用encode和decode
    介绍一下Python中webbrowser的用法?
    XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
    垃圾回收的优点和原理。并考虑2种回收机制。
    设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
  • 原文地址:https://www.cnblogs.com/lidar/p/10788678.html
Copyright © 2020-2023  润新知