• spring(二)


     spring的bean管理(注解)

    注解介绍:

    1:代码里面特殊的标记,使用注解可以完成功能

    2:注解写法@注解名称(属性名称=属性值)

    1)使用注解创建对象

    2)使用注解注入属性

    3xml和注解方式混合使用

    3:可以使用在类上面,方法上面,属性上面

    spring注解开发准备

    1.导入基本jar

     

    2.导入aopjar

     

    3.创建类,创建方法

    4.创建spring配置文件,引入约束

    1)第一天做ioc基本功能,引入约束beans

    2)做springioc注解开发,引入新的约束

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context" 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">
    
    <!-- bean definitions here -->

     

    <!--此处的base-package包范围很广,cn.ismy.*则是扫描ismy整个包-->
    <
    context:component-scan base-package="cn.ismy.entity"></context:component-scan>

    注解创建对象

    1.实例代码:

    @Component(value="user")
    //相当于在bean.xml中写<bean id="user" class=""></bean>
    public class User {
        public void add() {
            System.out.println("user...add");
        }
    }

    2.创建对象有四个注解

     

    spring提供了@Component的三种衍生注解(功能目前是一致的)
    @Component(value="user") @Controller(value="user")//web层 @Service(value="user")  //业务层 @Repository(value="user")//持久层 //这四者都一样,只是为以后的扩展留后路,本省用途清晰,spring在后续版本会对其增强

    四个注解功能都是一样的,都创建对象(spring给自己留的后路,为后续版本做扩展,了解一下即可)

    3.创建对象是一个单实例还是多实例

     

    注解注入属性

    1.创建一个service类,创建dao类,在service里面得到dao对象

    1)创建daoservice对象

     

    2)在service定义一个dao类型属性

     

    注入属性第二个注解@Resource

     

    配置文件和注解混合使用

    1.创建对象操作使用配置文件方式实现

     

    2.注入属性的操作使用注解方式实现

    resource里面name名称是xml中的id

     

    AOP

    aop概述

    1.aop:面向切面编程,扩展一个功能不通过修改源代码实现

    2.aop采取横向抽取机制,取代了传统的纵向继承体系重复性代码(太官方了)

    aop底层原理

    1.画图分析纵向机制原理

     

    2.画图分析横向机制原理

     

    aop操作相关术语

    Pointcut(切入点):类里面可以被增强的方法,这些方法被称为连接点

    切入点:在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add方法

    update方法,实际增强的方法称为切入点

    Advice(通知/增强):曾强的逻辑,比如扩展一个日志的功能,这个日志功能称为增强

    前置通知:在方法之前执行

    后置通知:在方法之后执行

    异常通知:方法出现异常

    最终通知:在后置之后执行

    环绕通知:方法之前和之后执行

    aspect(切面):把增强应用到具体的方法上面,过程称为切面

    把曾强用到切入点的过程

    spring的aop操作(基于aspectj的xml方式)

    1.在我们的spring里面进行aop操作,使用aspectj实现

    1aspectj不是spring一部分,和spring一起使用进行aop操作

    2Spring2.0以后新增了对aspectj支持

    2.使用aspectj实现aop有两种方式

    1)基于aspectjxml配置

    2)基于aspectj的注解方式

    Aop操作准备

    1.出了导入基本的jar包之外,还要导入相关的jar

     

    2.创建一个spring核心配置文件,导入aop的一个约束

     

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        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/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here -->
    </beans>

    使用表达式来配置切入点

    1.切入点:实际增强的方法

    2.常用的表达式

    execution<访问修饰符><返回类型><方法名><参数><异常>

    1execution*cn.ismy.aop.Book.add()//对此方法的add进行增强

    2execution*cn.ismy.aop.Book.*//对类中所有方法进行增强

    3execution* *.*//所有类所有方法进行增强

    4)匹配所有save开头的方法·execution*save*(....)

    Aspectj的aop操作

    1.配置两个方法的路径:

     

    2.给方法配置增强(此处不是很理解)

     

     log4j介绍

    1.通过log4j可以看到更详细信息

    1)经常使用log4j查看日志

    log4j.properties文件路径:hibernate-release-5.0.12.Finalprojectdocumentationsrc est esources

    2.使用

    1)导入log4jjar

    2)复制log4j配置文件,复制到src下面

     

    3)设置日志级别

     

    info:是基本信息

    debug:更详细信息

    spring整合web项目演示

    1.先演示问题

    1action调用serviceservice调用dao

     

    每次访问action时候,都会加载spring配置文件

    2)解决方案

    1.在服务器启动的时候,创建对象加载配置文件

    2.底层使用监听器,ServletContext对象,把压力交给服务器

    3)在spring里面不需要我们自己写代码实现,帮封装

    1.封装了一个监听器,只需要配置监听器就可以了

    2.配置监听器之前做事情,导入spring整合web项目jar

    spring-web.jar

     

    3.加载spring配置文件位置

    运行之后有个问题,默认的位置是applicationContext.xml,因此我们要指定加载位置

     

    最后配置后的结果

     

  • 相关阅读:
    Redis的配置与数据类型
    CSRF Failed: CSRF token missing or incorrect
    腾讯防水墙实现验证码
    Rest_Framework常用插件
    rest_framework序列化
    Nginx项目部署
    Nginx
    Django设置允许跨域请求
    Rest_Framework的视图与路由
    Rest_Framework
  • 原文地址:https://www.cnblogs.com/yq12138/p/7209942.html
Copyright © 2020-2023  润新知