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,因此我们要指定加载位置

 

最后配置后的结果

 

原文地址:https://www.cnblogs.com/yq12138/p/7209942.html