• bean对象的创建


    Bean  创建的生命周期

    1. 程序启动,首先读取 带有@Component,@Service  ,@Controller 的类这些类都是spring 要创建的bean 对象。

    2.默认根据无参构造方法实例化 这里该类就被创建成一个对象了,但还不是bean。

      推断构造方法:  有无参就用。 如果有多个构造方法,就用无参构造实例化。 如果没有无参构造方法,就报错。 也可以通过 在指定构造方法上加@PostConstruct,强制执行。

      推断构造方法的参数选择:  先根据类型去Spring中查找,查到是一个就赋值,查到多个 就根据 变量名字在查。 type+name

    3. 依赖注入

      根据  类上的 这些注解 @Autowired,@Resource,去spring 中取出来,进行赋值。

    4. 初始化。

      初始化前:如果需要可以进行赋值,比如数据库的查询赋值都是行的。

      初始化:如果需要可以进行赋值,比如数据库的查询赋值都是行的。

      初始化后(Aop): 生成代理对象。 所以说bean 的初始化,会产出两个对象,一个实际对象,一个又spring管理的代理类bean.

    5. 才正在是一个归spring 管理的bean。

    怎么样一个类要不要进行AOP?

      1. . 程序启动,首先读取 带有 @Aspect,@Component 注解的类。 如果通过反射。获取类中的方法。 比如获取 该类定义的切点 ,和切入表达式。然后就看那些类。符合就给哪些类生成代理类啊。

     


    class UserServiceProxy extends UserService{
    // 这个对象不是代理对象。 是bean 初始化时,真实的对象。
    private UserService userService;

    public void test(){
    // 1.y有没有 @Transactional
    // 2.执行切面 想要干的事情 (比如开启事务)
    //3. 执行业务逻辑 这里的 userService 不是代理对象。
    userService.test();
    }
    }

    注意:事务失效的情况。

      1. 代理类才是开启事务的类。 如果想要 类的事务传递下去。就

  • 相关阅读:
    解析Java反射java.lang.IllegalArgumentException: wrong number of arguments
    java中参数" ..."的用法和意思
    Synchronized方法锁、对象锁、类锁区别
    瀚云平台kafka简单原理
    ReflectionUtils.invokeMethod的作用
    实用———springmvc接收参数校验
    卷积神经网络CNN
    第一个TensorFlow程序
    TF从文件中读取数据
    TF基础5
  • 原文地址:https://www.cnblogs.com/xiaowangbangzhu/p/15933978.html
Copyright © 2020-2023  润新知