将对象的创建权交于spring,由IOC容器创建和销毁对象,不需要再自己去new对象。
目的:方便解耦,简化开发
一个简单的实际案例:1.创建一个User类
public class User { public void add(){ System.out.println("add...."); } }
2.创建XML文件
3.创建测试类
public class Text { @Test public void testAdd(){ //加载Spring配置文件 ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml"); //获取配置创建对象 User user = context.getBean("user", User.class); System.out.println(user); //调用User中的方法 user.add(); } }二.spring的XML配置文件 1.Bean标签基本配置
用于配置对象交于spring来创建
默认是调用类中的无参构造函数,如果没有无参构造函数则不能创建成功。
id:Bean实例在spring容器中的唯一标识
class:Bean的全限定名称(即某一类的全类名)
2.Bean标签范围配置scope:指对象的作用范围
1)当 scope 的取值为 singleton 时
Bean 的实例化个数:1个
Bean 的实例化时机:当 Spring 核心文件被加时,实例配置的 Bean 实例
对象创建:当应用加载,创建容器时,对象就被创健了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
2)当 scope 的取值为 prototype 时
Bean 的实例化个数:多个
Bean 的实例化时机:当调用getBean0方法时实例化 Bean
对象创建:当使用对家时,创健新的对象实例
对象运行:只要对象在使用,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回必
init-method:指定类中的初始化方法名称
destroy-method:指定类中销毁方法名称
public class User { public void add(){ System.out.println("add...."); } public void init(){ System.out.println("初始化..."); } public void destroy(){ System.out.println("销毁中..."); } }
4.Bean实例化三种方式
1.无参构造方法实例化 (默认,重点掌握)
2.工厂静态方法实例化(了解)
//创建Factory类 public class Factory { //创建静态方法,返回User类对象 public static User getUser(){ return new User(); } }
去找Factory类,发现有factory-method="getUser",就找getUser()方法获取到了User对象
3.工厂实例方法实例化(了解)
5.1.Bean依赖注入属性
ref:引用值
value:直接设置值
1.set方式注入
//创建UserServer,在此类中调用User类中的add()方法 public class UserServer { //通过在XML文件中提前注入User对象的方式 private User user; //set方法 public void setUser(User user) { this.user = user; } public void add(){ //调用User中的方法 user.add(); } }
XML中的配置,使用标签
测试类
public class Text { @Test public void testAdd(){ //加载Spring配置文件 ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml"); //获取配置创建对象 UserServer userServer = context.getBean("userServer", UserServer.class); //调用UserServer中的方法 userServer.adduser(); } }
2.有参构造函数注入
public class UserServer { private int x; public UserServer(int x) { this.x = x; } }
使用标签
5.2.Bean依赖注入 的数据类型
1.普通数据类型
public class UserServer { private int y; private String s; public void setY(int y) { this.y = y; } public void setS(String s) { this.s = s; } }
2.引用数据类型
3.集合数据类型
public class UserServer { private ListstrList; private Map map; public void setStrList(List strList) { this.strList = strList; } public void setMap(Map map) { this.map = map; } }
aaa bbb ccc
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)