• 注入


    注入方式:

    基于构造函数的依赖注入:

    public class UserServiceImpl implents UserService{
        private UserDao userDao;
        
        @Autowire
        public UserServiceImpl(UserDao userDao){
            this.userDao = userDao;
        }
    }

    基于Setter的依赖注入:

    public class UserServiceImpl implents UserService{
         private UserDao userDao;
         
         @Autowire
         public setUserDao(UserDao userDao){
             this.userDao = userDao;
         }
     }

    基于字段的依赖注入:

    public class UserServiceImpl implents UserService{
         @Autowire
         private UserDao userDao;
     }

    基于字段的依赖注入缺点:

    (1)对于有final修饰的变量不好使

         Spring的IOC对待属性的注入使用的是set形式,但是final类型的变量在调用class的构造函数的这个过程当中就得初始化完成,这个是基于字段的依赖注入做不到的地方.只能使用基于构造函数的依赖注入的方式。

    (2)掩盖单一职责的设计思想

    采用的是基于构造函数的依赖注入的方式来使用Spring的IOC的时候,当你注入的太多的时候,这个构造方法的参数就会很庞大;但是使用基于字段的依赖注入不会让你察觉,你会很沉浸在@Autowire当中。

    (3)与Spring的IOC机制紧密耦合

    当你使用基于字段的依赖注入方式的时候,确实可以省略构造方法和setter这些个模板类型的方法,但是,你把控制权全给Spring的IOC了,别的类想重新设置下你的某个注入属性,没法处理。

      (4)隐藏依赖性

    当你使用Spring的IOC的时候,被注入的类应当使用一些public类型(构造方法,和setter类型方法)的方法来向外界表达:我需要什么依赖.但是基于字段的依赖注入的方式,基本都是private形式的,private把属性都给封印到class当中了。

    (5) 无法对注入的属性进行安检

    基于字段的依赖注入方式,你在程序启动的时候无法拿到这个类,只有在真正的业务使用的时候才会拿到;想在属性注入的时候,想根据这个注入的对象操作点东西,你无法办到。

  • 相关阅读:
    四大组件之内容提供者
    【风马一族_代码英语】英语学习
    利用Maven快速创建一个简单的spring boot 实例
    Maven项目下面没有src/main/java这个包
    Maven中,pom.xml文件报错
    Maven一:maven的下载和环境安装以及创建简单的Maven项目
    SpringMVC
    自动装箱、拆箱
    序列化:Serializable
    java反射机制出浅读
  • 原文地址:https://www.cnblogs.com/KL2016/p/14620267.html
Copyright © 2020-2023  润新知