Spring基础学习,没有理论 都是干货

2020-12-07 10:20

阅读:827

标签:err   http   private   有一个   构造   swing   理论   point   名称   

##学习需要掌握:反射和最简单的MVC架构流程

##对spring有过基础性的理论知识

##按照代码一步步来,30分钟掌握Spring的基本使用

1:先用spring创建一个最简单的对象

首先创建一个对象
package com.itmayiedu.entity;

public class UserEntity {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
创建spring的xml文件
"1.0" encoding="UTF-8"?>
"http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    
    class="com.itmayiedu.entity.UserEntity"  scope="prototype"/>

springioc创建对象的方式有哪些

构造函数

工厂创建对象

       工厂类 静态工厂

       工厂内  非静态工厂

想说一个根据构造函数来创建对象

无参函数刚刚已经说过那,这里主要说一下有参函数,在实体类中我们需要给给他声明一个有参函数


    class="com.itmayiedu.entity.UserEntity" scope="prototype" />
    
    class="com.itmayiedu.entity.UserEntity">
        
                         value="张三">
                         value="18">

技术图片

 这里可以看到无参构造函数的优先于午参构造函数的

首先我们创建一个工厂类

package com.itmayiedu.entity;

import javax.swing.text.html.parser.Entity;

public class ObjectFactory {



    public  UserEntity getInstance(){
        System.out.println();
        return new UserEntity("wwww",23);
    }


    public static UserEntity getStaticInstance(){
        System.out.println();
        return new UserEntity("ggg",66);
    }
}

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">


    
    class="com.itmayiedu.entity.UserEntity" scope="prototype" />
    
    class="com.itmayiedu.entity.UserEntity">
        
                         value="张三">
                         value="18">class="com.itmayiedu.entity.ObjectFactory">class="com.itmayiedu.entity.ObjectFactory"
          factory-method="getStaticInstance">

 

技术图片

接下来讲讲spring的注入

注入的方式

通过构造函数(上面已经演示过)

通过set方法给对象赋值

p名称空间

自动装配

注解

 

在这里讲解set方法的注入

### 曾经迪士尼面试官问过一道题,在spring中加入A依赖B 如何进行注入, 当时特别简单的一道题,结果想歪啦.说什么A的实体类有一个B对象进行new,接下来进行正解

技术图片

技术图片

 技术图片

 

技术图片

这样的话,就完成了抵赖注入.

那么很多人很好奇问啦.为什么叫setter注入.没setter为什么就不行了.其实他底层用了反射setter方法修改属性办法,详情可以看我的过去的博客

https://www.cnblogs.com/itcastwzp/p/10971746.html  

 

P标签注入

 "userService" class="cn.itmayiedu.UserAction" p:userService-ref="userDao">

这种方式恨简单.但是用的人很少,作为了解就好

Spring注解

如果想使用spring的注解,我们需要在xml中开启注解的权限并且扫描注的范围

package="com.cloudwalk">

@Respsitory  他的作用 类似   用于数据层

@Sevice  服务层

@Controller  控制层

作用类似

  class="com.itmayiedu.entity.ObjectFactory">

@Autowired类似

技术图片

 

 Spring的AOP

aop可以类似看重复的代码看成切面然后直接引用

首先xml开启aop

  
   

 

 

@Component
@Aspect
public class Aop {
/** 执行方法执行前**/ @Before(
"execution(* com.itmayiedu.entity.controller.UserService.add(..))") public void begin(){ System.out.println("开启事务"); }
/**执行方法执行后**/ @After(
"execution(* com.itmayiedu.entity.controller.UserService.add(..))") public void commit(){ System.out.println("事务提交"); } /**执行方法抛异常**/ @AfterThrowing("execution(* com.itmayiedu.entity.controller.UserService.add(..))") public void error(){ System.out.println("啊,我有异常啦"); } /**方法运行结束后**/ @AfterReturning("execution(* com.itmayiedu.entity.controller.UserService.add(..))") public void run(){ System.out.println("运行"); } }

   然后直接调用即可

技术图片

这里难点和重点需要学习的是spring aop的表达式的写法 也就是这写aop执行在那些地方有效

具体参考https://www.cnblogs.com/imzhuo/p/5888007.html这位大佬的博客

 

下面详解如何xml配置aop

首先取消@aspect注解

技术图片

配置xml

  • 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd">
    
    
    
        package="com.itmayiedu">class="com.itmayiedu.entity.controller.Aop"> 

    技术图片

    运行结果

  • 技术图片

     

 

Spring基础学习,没有理论 都是干货

标签:err   http   private   有一个   构造   swing   理论   point   名称   

原文地址:https://www.cnblogs.com/itcastwzp/p/10989649.html


评论


亲,登录后才可以留言!