博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring——SpringIOC创建对象的方式、Spring配置文件简单介绍、Bean作用域及自动装配
阅读量:3941 次
发布时间:2019-05-24

本文共 3957 字,大约阅读时间需要 13 分钟。

Spring——SpringIOC创建对象的方式、Spring配置文件简单介绍

一、SpringIOC创建对象的方式

我们平时在创建对象的时候会使用无参构造、有参构造的方式创建。那么我们来看看Spring中怎么处理这两种情况。

创建实体类,并在实体类构造和set方法内部输出测试

package com.muhan.pojo;public class User {
private int id; private String name; private int age; public User() {
System.out.println("User====无参构造"); } public User(String name) {
System.out.println("User====一个参参数的构造"); this.name = name; } public User(String name, int age) {
System.out.println("User====两个个参参数的构造"); this.name = name; this.age = age; } public User(int id, String name, int age) {
System.out.println("User====三个参参数的构造"); this.id = id; this.name = name; this.age = age; } public int getId() {
return id; } public void setId(int id) {
System.out.println("User====setId方法被调用"); this.id = id; } public String getName() {
return name; } public void setName(String name) {
System.out.println("User====setName方法被调用"); this.name = name; } public int getAge() {
return age; } public void setAge(int age) {
System.out.println("User====setAge方法被调用"); this.age = age; } @Override public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; }}

测试代码:

import com.muhan.pojo.User;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserTest {
@Test public void test(){
//获取ClassPathXmlApplicationContext对象,关联spring配置文件applicationContext.xml ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //获取对象名为user的对象 User user = (User) context.getBean("user"); System.out.println(user); }}

(1)使用构造器通过下标注入

①使用三个参数构造器下标赋值:

测试结果:

在这里插入图片描述
②使用两个参数构造器下标赋值:

测试结果:

在这里插入图片描述
③使用一个参数的构造器下标赋值:

测试结果:

在这里插入图片描述
④使用无参构造器创建对象:

测试结果:

在这里插入图片描述

(2)使用构造器通过名称注入

①使用三个参数构造器通过名称注入

测试结果:

在这里插入图片描述
②使用两个参数构造器通过名称注入

测试结果:

在这里插入图片描述
③使用一个参数构造器通过名称注入

测试结果:

在这里插入图片描述

(3)setter注入

①使用setter注入一个值:

测试结果:

在这里插入图片描述
①使用setter注入两个值:

测试结果:

在这里插入图片描述
①使用setter注入三个值:

测试结果:

在这里插入图片描述

二、SpringIOC创建对象的方式总结

(1)注入方式:

  • 1.通过构造注入(constructor-arg,下标与构造方法参数参数对应)
    • 通过下标(index)
      • 通过有参构造,无参构造
    • 通过参数名(name)
      • 通过有参构造,无参构造
  • 2.通过setter注入(property,可以任意组合注入,默认调用无参构造和set方法)

(2)注意:

  • 当我们使用setter(property)注入的时候,必须要有对应的set方法和无参构造(如果不写有参构造,默认会有无参构造),如果没有就会报错
  • 当我们使用构造注入的时候,必须要有对应的构造方法,如果没有就会报错

三、Spring配置文件简单介绍

(1)bean

(2)alias

(3)import

四、Bean作用域及自动装配(转载)

在Spring中,那些组成应用程序的主体及由SpringIOC容器所管理的对象,被称之为bean。简单地讲,bean就是由IOC容器初始化、装配及管理的对象。

配置文件中定义 Bean 时,我们不但可以配置 Bean 的属性值以及相互之间的依赖关系,还可以定义 Bean 的作用域 。作用域会对 Bean 的生命周期和创建方式产生影响 。
Bean 的作用域类型:

类型 说明
singleton 在 Spring 容器中仅存在一个 Bean 实例, Bean 以单例的形式存在,默认值。
prototype 每次从容器中调用 Bean 时,都会返回一个新的实例,即相当于执行 new XxxBean() 的实例化操作。
request 每次 http 请求都会创建一个新的 Bean , 仅用于 WebApplicationContext 环境。request.setAttribute("","")
session 同一个 http Session 共享一个 Bean ,不同的 http Session 使用不同的 Bean,仅用于 WebApplicationContext 环境。session.setAttribute("","")
globalSession 同一个全局 Session 共享一个 bean, 用于 Porlet, 仅用于 WebApplication 环境。application.setAttribute("","")

Spring 以容器的方式,使得我们仅需配置,即可得到天然的单例模式。

在五种作用域中,request、session和globalSession三种作用域仅在web的应用中使用。

单列模式:该对象再内存中只存在一份

单列模式的实现方式有很多种,但是一般都是使用static关键字,让其成为静态共享资源
单列模式分为饿汉式和懒汉式,饿汉式的意思就是不管你要不要这个对象,我都给你提前创建好,在类加载的时候资源就加载;懒汉式是当需要时再加载。也就是说饿汉式和懒汉式最大的区别就是加载时机不同。
还有一种比较安全的实现方式是使用枚举实现单例模式

自动装配(了解)

自动装配的意思是说,当自动装配的属性和引用 的名称一样,可以使用自动装配

你可能感兴趣的文章
巨杉数据库荣获2020年度河南省科学技术进步奖
查看>>
湖仓一体提升管理效率 培育数据沃土
查看>>
报名启动!巨杉数据库 2021 湖仓一体技术大赛带你进入分布式技术的星辰大海
查看>>
H2数据库用户自定义函数方法及范例
查看>>
关于系统中使用多个PropertyPlaceholderConfigurer的配置
查看>>
厦大06应用金融硕士研究生推荐精读书目
查看>>
《越人歌》-诗经
查看>>
Jetty嵌入式服务器的JNDI快速配置指南
查看>>
夜, 北京
查看>>
图示ExtJS商业智能的仪表盘配置系统 - (Season 1)
查看>>
MAC 显示隐藏文件的方法
查看>>
Ext.Ajax教程,及Get和Post请求的使用拾遗
查看>>
Mac下配制Maven过程
查看>>
Mac下的Eclipse3.4反编译插件
查看>>
Mac截图快捷键大全
查看>>
扩展Spring Security-用户密码自定义加密的快速实现
查看>>
Log4j异步日志简明配制
查看>>
扩展Spring Security-国际化终极配制
查看>>
在Mac OS系统下得Linux虚拟机中安装Confluence3
查看>>
在Eclipse中调试Jetty应用的配置(XML配置文件方式)
查看>>