• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Spring注入的三种方式

武飞扬头像
学java做互联网霸主
帮助3

Spring实例注入的三种方式:
1.属性注入,即使用注解注入。
2.set方法注入。
3.构造方法注入。
1.属性注入
使用@Autowired、@Resource或@Inject注解注入。
1.1@Autowired:Spring提供,默认按照类型装配。必须要求要注入的对象存在,如果要允许空值,设置其required属性为true
1.2@Resource:J2EE提供,默认按照名称装配,名称可以通过name属性指定,默认取字段名进行查找并完成注入。找不到名称时才会按照类型进行装配。所以@Resource的作用其实和@Autowired类似,只不过是注入方式不同。
但是属性注入是不推荐的。
2.set方法注入
我们很少使用该方法注入,可能是因为代码过于臃肿

@Service
public class BService {
    AService aService;

    @Autowired
    public void setaService(AService aService) {
        this.aService = aService;
    }
}

3.构造方法注入

@Service
public class AService {
    BService bService;
    @Autowired
    public AService(BService bService) {
        this.bService = bService;
    }
}

类中有多个构造方法时,@Autowired是必须的,用来指定使用哪个构造方法。
4.使用哪种构造方法
使用构造方法注入更好,构造注入方法有以下几个优势:
4.1:依赖不可变。通过构造方法注入的bean以后无法修改。
4.2:依赖不为空。构造方法注入时会自动检查注入的对象是否为空。
4.3:完全初始化。拿到的是完全初始化的对象。
5.为什么实体类不用注入
考虑是否将一个class交由spring管理,关键看这个class产生的bean是否符合spring提供的scope的生命周期规则。
5.1、实体类需要附上对应的数据才有意义;
5.2、由spring管理并注入的类是可大量重复使用的;
5.3、一个实体类可对应多条数据,如果实例化该类,则需要针对所有的数据实例化,这是不可能的,导致程序更加臃肿,还不如需要的时候再实例化。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhabic
系列文章
更多 icon
同类精品
更多 icon
继续加载