Bean管理(注解)和AOP操作(基于配置)
2018-06-18 02:02:59来源:未知 阅读 ()
spring的bean管理(注解)
注解写法:@注解名称(属性名称=属性值)
注解使用在类上面,方法上面和属性上面
Spring注解开发的准备
- 导入基本jar包,与spring的bean管理(配置文件)的那一章节引用相同;
- 导入aop的jar包
- 创建类,创建方法
- 创建spring配置文件,引入约束
4.1 上一篇做ioc的基本功能,引入的是beans
4.2 做spring的ioc注解开发,还要引入新的约束(context)
4.3 在上一步中的xml配置文件中加入开启注解扫描的标签,其中base-package是待创建类所在包的名字,可以只写到父包名,这样会包含所有的子包名
-
使用注解创建对象
- 在待创建对象的类上面使用注解@Component
@Component(value = "user") //完全等同于在xml中添加标签 <bean id="user" class =""/>;可以看出value就是bean中的id值 public class User{ public void add(){ System.out.println("add....."); } }
2. 依然可以采用相同写法的测试代码对以上待创建类进行测试,注意getBean方法中的参数此时为注解中value值,此处也看出注解中value和xml中的配置对象的id为同一个东西
3. 创建对象还有其他三个注解
4. 创建对象是单实例还是多实例(不写默认是单实例)
方法:在@Component注解下添加@Scope(value=“prototype”)
-
使用注解注入属性
1.案例:创建service类,创建dao类,在service得到dao对象,
方法一:使用@Autowired [根据类名来找到需要创建对象的类,此注解没有参数,是根据被注解的属性的类型来确定类名]
方法二:使用@Resource(name="userDao") [此userDao即是类UserDao中注解的value值,也可以是xml中待创建类的id值]
@Compontent(value="userService")//value这个单词可以省略不写 public class UserService{ //1定义dao类型属性 //使用注解方式时候不需要set方法 ,在dao属性上面使用注解完成对象注入 @Autowired private UserDao userDao; public void add() { userDao.add(); } } //另一个java文件中 @Compontent(value="userDao") public class UserDao{ public void add(){ System,out.println("add........"); } }
-
xml和注解方式的混合使用
方式:创建对象操作使用配置文件方式实现(如下1.1);
注入属性操作使用注解方式实现(如下1.2)
- 案例:在BookService类中调用BookDao类和OrdersDao类
1.1 在xml中添加待创建类 (等同于在类中直接使用@Compontent(value="userDao")这种写法)
1.2 在BookService类中添加属性(两个Dao类),以下@Resource(name ="bookDao")中name的取值,为xml中对应的id值,也可以把xml添加待创建对象的bean标签理解为在待创建的类中加了@Compontent(value="bookDao"),两个效果是一样的
AOP
-
aop概述
1. AOP:面向切面(方面)编程,扩展功能不修改源代码实现
2. AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码
3. AOP之前的原始方式来扩展功能
-
aop底层原理
1.横向机制的原理:
1.1 针对有接口的情况
1.2 针对non 接口的情况
个人觉得与纵向抽取机制的区别是,此机制是对目标类创建子类,在子类中完成增强,而纵向抽取是以目标类继承特指的父类完成增强
-
aop操作相关术语
Joinpoint-连接点:类里面可以被增强的方法,这些方法称为连接点;
Pointcut-切入点:实际被增强的方法称为切入点;
Advice-通知/增强:方法中实际需要被增强的逻辑称为通知/增强,比如扩展个日志功能,这个日志功能就称为通知/增强,
通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能);
Aspect-切面: 把我们的增强应用到具体方法上面,这过程称为切面 【把Advice应用到pointcut的过程】
spring的aop操作(基于aspectj的xml方式)
-
aspectj
1. 在spring里面进行aop操作,使用aspectj实现
2. aspectj不是spring的一部分,是个框架,和spring一起使用进行aop操作
3. 使用aspectj实现aop的两种方式:
(1)基于aspectj的xml配置 【本篇幅介绍】
(2)基于aspectj的注解方式 【下一篇幅介绍】
-
Aop操作准备
1. 导入aop相关的jar包
2. 创建spring核心配置文件,导入aop约束
3. 使用表达式配置切入点【实际被增强的方法】
常用的表达式
execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
(1)execution(* cn,itcast.aop.Book.add(..))
(2) execution(* cn.itcast.aop.Book.*(..))
(3) execution(* *.*(..))
(4) 匹配所有save开头的方法 execution(* save*(..))
-
Aspectj的aop操作
前置增强的配置如上code所示,在以下测试代码时:在执行add()时,会先执行增强类myBook中的前置增强方法before1,然后再执行add
后置增强的写法和配置与前置增强类似,
下面再介绍一种环绕增强,其增强实现如下:这里主要区别是引入了ProceedingJoinPoint类,
log4j介绍
1.通过log4j可以看到程序运行过程中更详细的信息
(1)经常使用log4j查看日志
2.使用:
(1)导入log4j的jar包
(2)复制log4j的配置文件,复制到src下面
3.设置日志级别:
log4j.rootLogger = info,stdout
(1) info: 基本信息
(2)debug:更详细信息
spring整合web项目演示
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java--注解 2020-06-11
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解 2020-06-11
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
- springboot~注册不同级别包里的bean~scanBasePackages 2020-06-10
- Java 必须掌握的 12 种 Spring 常用注解! 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash