一、Spring的bean管理(注解)
(1)注解:代码里面特殊标记,使用注解可以完成功能。
(2)注解写法@注解名称(属性名称=属性值)
(3)注解使用在类上面,方法上面和属性上面
Spring注解开发准备
1.导入Jar包,导入aop的jar包;
2.创建一个类,创建一个方法;
3.创建spring配置文件,引入约束
(1)第一天做ioc基本功能,引入约束beans;
(2)做spring的ioc往注解开发,引入新的约束;
<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">
</beans>
4.开启注解的扫描
<!--开始注解扫描
(1)到包里面扫描类、方法、属性上面是否有注解
-->
<context:component-scan base-package="cn.itcast"></context:component-scan>
<!--
扫描属性上面的注解
-->
<!--<context:annotation-config></context:annotation-config>>
- 注解创建对象
1.在创建对象的类上是使用注解实现
@component(value="user") //<bean id="user" class="/">
public class User{}
二、创建对象有四个注解
Spring中提供@component的三个衍生注解:(目前来讲功能是一致的)
@Controller :web层
@Service :业务层
@Repository :持久层
这三个注解是为了让标注本省的用途清晰,Spring在后续版本会对其增强
3.创建对象单实例还是多实例
@Service(value="user")
@Scope(value="prototype")
public class User{}
- 注解注入属性
1.创建service类,创建dao类,在service得到dao对象;
Service类
第一种注解:@Autowired
@Service(value="userService")
public class UserService{
//1.定义dao属性
//在dao属性上使用注解完成对象注入
@Autowired //自动装配是根据UserDao进行装配的
private UserDao userDao;
//使用注解方式时候不需要set方法
public void add(){
System.out.println("service......");
userDao.add();
}
}
第二种注解:Resource
@Service(value="userService")
public class UserService{
//name属性值写注解到创建dao对象value值,保持与Dao类中Component注解中的Value一致
@Resource(name="userDao")
private UserDao userDao;
//使用注解方式时候不需要set方法
public void add(){
System.out.println("service......");
userDao.add();
}
}
dao类
@Component(value="userDao")
public class UserDao{
public void add(){
Sysetm.out.println("dao.....");
}
}
TestAnno类
public class TestAnno{
@Test
public void testService(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = (UserService)context.getBean("userService");
userService.add();
}
}
- 配置文件(xml)和注解方式混合使用
1.创建对象操作使用配置文件方式实现;
2.注入属性的操作使用注解方式实现;
2.AOP
- aop概述
概念:面向切面(方面)编程,扩展功能步修改源代码实现。AOP采用横向抽取机制,取代了传统纵向继承体系重复代码(性能监视、食物管理、安全检查、缓存)
- aop底层原理
- aop操作相关术语
连接点:类里面那些方法可以被增强,这些方法称为连接点。
切入点: 在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面 add()和update(),实际增强的方法称为切入点。
通知/增强:增强的逻辑,曾为增强/通知,比如扩展日志功能,这个日志功能称为增强。
分为前置通知:在方法之前执行
后置通知:在方法之后执行
异常通知:方法出现异常
最终通知:在后置之后执行
环绕通知:在方法之前和之后执行
切面:把增强应用到具体方法上面,过程称为切面。
三、spring的aop操作(基于aspectj的xml方式)
1.在spring里面进行aop操作,进行aspectj实现
(1)aspectjb不是spring的一部分,和Spring一起使用进行aop操作
(2)Spring2.0以后新增了对Aspectj支持。
2.使用aspectj实现aop有两种方式:
(1)基于aspectj的xml配置
(2)给予aspectj的注解方式
AOP操作准备
1.导入核心jar包。
2.创建spring核心配置文件,导入aop的约束
实用表达式配置切入点
1.切入点,实际增强的方法。
2.常用的表达式。
execution(<访问修饰符>?<返回类型><方法名>(<参数><异常>))
(1)execution(* cn.itcast.aop.Book.add(....))
(2) execution(* cn.itcast.aop.Book.*(..))
(3) execution(* *.*(....))
(3)匹配所有save开头的方法 execution(* save*(...))
Aspectj的aop操作
4.log4j介绍
(1)通过log4j可以看到程序运行过程中更详细的信息
经常使用log4j查看日志
(2)使用
(1)导入log4j的jar包
(2)复制log4j的配置文件,复制到scr下面
(3)设置日志级别
info,查看基本信息
debug:查看更详细信息
5.spring整合web项目