注解的配置开启注解扫描 前提先导入
<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="">          一样简化开发

spring 注解注入实体类 spring基于注解注入_java

 2种常用的配置扫描注解的方式 :一种是扫描包类所有的指定的注解,一种是排除指定注解的注解


基于注解方式实现属性注入 引用类型的注入/即根据User user 类型注入/接口

(1)@Autowired:根据属性类型进行自动装配  也就是说private Userdao dao上的注解自动注入

如果Userdao dao 有多个实现接口的类的话就要配合注解@Qualifier使用

(2)@Qualifier:value=""根据名称进行注入 个配合@Autowired 一起使用

(3)@Resource:可以根据类型注入,@Resource(name="") 可以根据名称注入 不建议使用

@Value:注入普通的属性


完全注解开发

首先创建哥SpingConfig类@Configuration注解指明是配置类



 获取注解的方式发生改变而已

spring 注解注入实体类 spring基于注解注入_xml_02

 springboot会自动生成


AOP编程

spring 注解注入实体类 spring基于注解注入_java_03

 底层原理动态代理不会

AOP术语:{1.连接点:类中的那些方法可以增强,这些方法称为连接点

                    2.切入点:实际被增强的方法称为切入点

                     3.通知(增强)(1)实际增强的逻辑部分称为通知(增强)

                                            前置、后置、环绕、异常、最终

                      4.切面 动作:把通知应用到切入点的过程

spring 注解注入实体类 spring基于注解注入_xml_04

 


spring 注解注入实体类 spring基于注解注入_前端_05

 

spring 注解注入实体类 spring基于注解注入_spring_06

 

spring 注解注入实体类 spring基于注解注入_spring 注解注入实体类_07

 *注意返回类型可以不写空格替代即可其他的就*替代参数列表(..)代表参数个数任意

注解需要用到类上面代理对象

spring 注解注入实体类 spring基于注解注入_xml_08

 配置文件搜先配置context的扫描注解+配置的aop代理对象   xml+注解的方法没有创建config类

spring 注解注入实体类 spring基于注解注入_xml_09

 

 配置前置通知,在执行方法前执行

spring 注解注入实体类 spring基于注解注入_spring 注解注入实体类_10

 配置最终通知(后置通知)执行方法后都要执行

spring 注解注入实体类 spring基于注解注入_java_11

 

 返回通知(后置通知)  执行方法后执行

spring 注解注入实体类 spring基于注解注入_java_12

 异常通知  抛出异执行

spring 注解注入实体类 spring基于注解注入_spring_13

环绕通知

spring 注解注入实体类 spring基于注解注入_xml_14

 

spring 注解注入实体类 spring基于注解注入_前端_15

spring 注解注入实体类 spring基于注解注入_前端_16

 

 add()方法有异常的时候 不执行add+黄绕之后after都会执行。


@Pointcut(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")public void pointdemo(){

}


方法的抽取出来即可  在用的时候只需要@Before(value="pointdemo");调用方法名字即可

多个增强类同时增强设置优先级@Order(1)注解执行;值越小优先级越大;

完全基于xml方式进行开发

spring 注解注入实体类 spring基于注解注入_java_17

基于完全注解开发,其余和上诉的注解开发一样扫描包@

spring 注解注入实体类 spring基于注解注入_java_18