注解的配置开启注解扫描 前提先导入
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
xml中配置 <context:component-scan base-package="com.atguigu" ></context:component-scan>开启注解扫描
2、Spring 针对 Bean 管理中创建对象提供注解 (1)@Component (2)@Service (3)@Controller (4)@Repository * 上面四个注解功能是一样的,都可以用来创建 bean 实例
在注解里面 value 属性值可以省略不写, 默认值是类名称,首字母小写 //UserService -- userService 与基于xml配置<bean id="" class=""> 一样简化开发
2种常用的配置扫描注解的方式 :一种是扫描包类所有的指定的注解,一种是排除指定注解的注解
基于注解方式实现属性注入 引用类型的注入/即根据User user 类型注入/接口
(1)@Autowired:根据属性类型进行自动装配 也就是说private Userdao dao上的注解自动注入
如果Userdao dao 有多个实现接口的类的话就要配合注解@Qualifier使用
(2)@Qualifier:value=""根据名称进行注入 个配合@Autowired 一起使用
(3)@Resource:可以根据类型注入,@Resource(name="") 可以根据名称注入 不建议使用
@Value:注入普通的属性
完全注解开发
首先创建哥SpingConfig类@Configuration注解指明是配置类
获取注解的方式发生改变而已
springboot会自动生成
AOP编程
底层原理动态代理不会
AOP术语:{1.连接点:类中的那些方法可以增强,这些方法称为连接点
2.切入点:实际被增强的方法称为切入点
3.通知(增强)(1)实际增强的逻辑部分称为通知(增强)
前置、后置、环绕、异常、最终
4.切面 动作:把通知应用到切入点的过程
*注意返回类型可以不写空格替代即可其他的就*替代参数列表(..)代表参数个数任意
注解需要用到类上面代理对象
配置文件搜先配置context的扫描注解+配置的aop代理对象 xml+注解的方法没有创建config类
配置前置通知,在执行方法前执行
配置最终通知(后置通知)执行方法后都要执行
返回通知(后置通知) 执行方法后执行
异常通知 抛出异执行
环绕通知
add()方法有异常的时候 不执行add+黄绕之后after都会执行。
@Pointcut(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")public void pointdemo(){
}
方法的抽取出来即可 在用的时候只需要@Before(value="pointdemo");调用方法名字即可
多个增强类同时增强设置优先级@Order(1)注解执行;值越小优先级越大;
完全基于xml方式进行开发
基于完全注解开发,其余和上诉的注解开发一样扫描包@