zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    sqlserver查询数据的所有表名和行数
    java内存查看与分析
    jboss中JVM监控
    建设一个能承受500万PV/每天的网站如果计算?
    Java MVC框架性能比较
    struts1,struts2,springMVC终极对比
    struts2的action是线程安全的,struts1的action不是线程安全的真正原因
    浅析Struts1和Struts2的Action线程安全问题
    xml bug之cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration...
    eclipse调试web项目
  • 原文地址:https://www.cnblogs.com/lidar/p/10788678.html
Copyright © 2011-2022 走看看