spring框架
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring框架相关的知识,希望对你有一定的参考价值。
Spring的bean管理(注解)
1、代码里面特殊标记,使用注解可以完成相应功能
2、注解写法@注解名称(属性名称=属性值)
3、类,方法,属性(注解使用)
spring注解开发准备
1、导入基本的jar包及aop的jar包(有关注解的jar包)
2、创建类,创建方法
3、创建spring配置文件,引入约束
spring的ioc注解开发,引入新的约束
4、开启注解扫描
@Component:组件(作用在类上)
Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)
@Controller :web层
@Service :业务层
@Repository :持久层
注解创建对象
1、在创建对象的类上面使用注解实现
2、创建对象的四个注解
注解注入属性 @Autowired自动装配
1、创建Service类,创建Dao类,在service得到dao对象
2、@Resource(name="userDao"):name属性值 写 注解创建dao对象value
配置文件和注解混合使用
1、创建对象操作使用配置文件方式实现
2、注入属性的操作使用注解方式实现
AOP
aop:面向切面编程,扩展功能不修改源代码实现
aop采取横向抽取机制,取代了传统纵向继承体系重复性
AOP底层原理
动态代理实现
AOP操作术语
Joinpoint(连接点):
在类里面可以被增强的方法法,这些方法称为连接点
Pointcut(切入点)
在类里面可以有很多的方法被增强,实际增强的方法成为切入点
Advice(通知/增强)
增强的逻辑,称为增强,比如扩展日志功能,这个日志功能成为增强
前置通知:在方法前执行
后置通知:在方法后执行
异常通知:在方法发生异常执行
最终通知:在后置之后执行
环绕通知:
Aspect(切面)
把增强应用到具体方法上面的过程称为切面
(把增强用到切入点的过程)
spring的aop操作(基于aspectj的xml方式
1、在spring里面进行aop操作,使用aspectj实现
aspectj不是spring一部分,和spring一起使用进行aop操作
spring2.0以后新增了对AspectJ支持
2、使用aspectj实现aop有两种方式
基于aspectj的xml配置
基于aspectj的注解方式
AOP操作准备
1、除了导入基本的jar包之外,还需要导入aop相关的jar包
2、创建spring核心配置,导入aop约束
使用表达式配置切入点
1、切入点,实际增强的方法
2、常用的表达式
execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
execution(* *.*(..))
log4j介绍
1、通过log4j可以看到程序运行过程中更详细的信息
经常使用log4j查看日志
2、使用
导入log4j的jar包
复制log4j。properties的复制文件,复制到src下面
3、设置日志级别
log4j.rootLogger=info,stdout
info:看到基本信息
debug:看到更详细信息
spring整合web项目演示
1、演示问题
(1)action调用service,service调用dao
每次访问action时候,都会加载spring配置文件
2、解决方案
(1)在服务器启动时,创建对象加载配置文件
(2)底层使用监听器、ServletContext对象
3、在spring中不需要我们自己写代码实现,已经帮助我们封装
(1)封装了一个监听器,只需要配置监听器就可以了
(2)配置监听器之前做一些事情:导入spring整合web项目的jar包(spring-web.jar)
(3)指定加载spring配置文件位置
1 <context-param> 2 <param-name>contextConfigLocation</param-name> 3 <param-value>classpath:bean1.xml</param-value> 4 </context-param>
以上是关于spring框架的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段
Spring boot:thymeleaf 没有正确渲染片段
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段