Spring框架
思想:高内聚, 低耦合
Spring 最基本的jar包:
一:Bean实例化的三种方式:
1:无参构造注入: (必须提供无参构造函数)
2:使用静态工厂创建对象 : (factory-method:是工厂的静态方法)
3:实例工厂创建: (factory-method:是工厂的实例方法)
注意 :第一种方法是常用的
二:bean标签的属性 以及Bean的作用范围
Id: 对象名字,任意取
Name : 名字,作用和id一致 (不常用)
Class : 类的全路径
Scope : bean的作用范围 (singleton:默认单例 ;prototype :多例;request:创建的bean存入到request作用域;session :将bean存放到session作用域;globalSession:创建对象存入到全局的session中)
三:属性注入
Spring 的注入方式:
1:有参构造注入 :(name的值跟构造方法的形参必须保持一致)
2:set注入:( name的值是属性的名字)必须生成属性的Set方法
3:复杂类型的注入:
四 :通过注解创建对象
写法:@注解名称(属性名称=属性值)
导入相关jar包:
注 :扫描多个包可用逗号分隔或者例如: com.new.study 扫包: com即可
@Component 组件:(作用在类上)
Spring 中提供 @Component的三个衍生注解:(功能目前来讲是一致的)
@Controller :WEB层 ;@Service :业务层 ;@Repository持久层
这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会增强
Component(value=”xxx”) value可用省略 不写默认的对象名类名首字母小写
作用在属性上:
@Autowried : 自动注入类的对象
@Resource (name=”xxx”) xxx 跟 component(value=”xxx”)的Value值一致
五:Spring的 AOP 操作
Aspectj是一个面向切面的框架,它拓展了java语言。Aspectj定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的class文件。Aspectj是一个基于java语言的AOP框架, spring2.0以后新增了对Aspectj切点表达式支持
@Aspectj是Aspectj1.5新功能,通过JDK5注解技术,允许直接在Bean类中定义切面
新版本Spring框架建议使用Aspectj方式来开发AOP 。
1:在Spring里面进行AOP操作,使用 Aspectj实现
(1): aspectj不是Spring的一部分,和spring一起使用进行aop操作,Spring2.0以后新增了对Aspectj支持
(2):使用aspectj实现AOP的两种方式: 基于aspectj的xml配置和基于注解的方式
2:AOP 准备操作:导入相关 jar 包 和 AOP 约束
AOP 相关术语:
3:XML配置方式:
使用表达式配置切入点 切入点:实际增强的方法
语法: execution (<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
(1) execution(* Class类名.方法(..)) 含义:*:代表任意访问修饰符 ;(. .):代表包含所有参数;
(2) Execution(* 类名.*(..)) ;表示此类下的任意修饰符的方法
(3) Execution (* *.*(..)) ; 表示所有类的所有方法
(4) Execution (* save*(..)) ; 匹配所有save开头的方法
注解配置方式如下:
在Spring 核心配置文件中开启注解功能:
具体配置如下: