zl程序教程

您现在的位置是:首页 >  后端

当前栏目

spring笔记一详解编程语言

2023-06-13 09:20:35 时间

 

Ioc—Inversion of Control,即“节制反转”,不是什么手艺,而是一种设计思惟。

 

我们在Biz的文件夹下面,建立一个类SpringContext.java

public class SpringContext{ 

 private static ApplicationContext ctx;//静态变量 

 //get()方式 

 Public static ApplicationContext getCtx(){ 

return ctx; 

static { 

if(ctx == null){ 

ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”); 

}

如许,在利用spring挪用对象时可以直接采用如下代码:

public void addBook(Tbook bk)throws Exception 

 IBookDao dao =(IBookDao) SpringContext.getCtx( ).getBean(“bookDao”); 

//这里挪用单例模式的方式就可以获得Context 对象 

}
用静态工场体式格局对Bean进行实例化(建立类的对象)

applicationContext.xml:

 ?xml version="1.0" encoding="UTF-8"? 

 beans xmlns="http://www.springframework.org/schema/beans" 

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

 xsi:schemaLocation="http://www.springframework.org/schema/beans 

 http://www.springframework.org/schema/beans/spring-beans.xsd" 

 !-- 静态工场获得bean实例 -- 

 bean id="product" 

 factory-method="getProduct" 

 !-- getProduct静态方式获得bean实例 -- 

 /bean 

 /beans 

Product 产物类

 

public class Product { 

 public String getproducetname(){ 

 return "xiaomi10"; 

}

 

StaticFactory 静态工场类

 

public class StaticFactory { 

 //静态的方式 可以获得产物的对象 

 public static Product getProduct(){ 

 return new Product(); 

}

 

Test 测试类

 

ApplicationContext app = new ClassPathXmlApplicationContext("com/chinasofti/util/applicationContext.xml"); 

Product product = (Product)app.getBean("product"); 

System.out.println(product.getproducetname());

 

用通俗工场体式格局对Bean进行实例化(建立类的对象)

applicationContext.xml:

 !-- 通俗工场获得bean实例 -- 

 bean id="putongFactory" 

 /bean 

 bean id="product1" factory-bean="putongFactory" factory-method="getProduct" 

 /bean 

PutongFactory 通俗工场类

 

public class PutongFactory { 

 //非静态的方式获得另一个类的对象 

 public Product getProduct(){ 

 return new Product(); 

}

 

 用组织器体式格局对Bean进行实例化(且这个实例一出生就拥有值)

组织方式分为二种:

 一种是无参的,一种是有参的

 我们可以用行使组织方式给类中的属性赋值。

applicationContext.xml:

 bean id="dog" 

 constructor-arg index="0" value="小白" /constructor-arg 

 /bean 

 !-- Dog dog =new Dog("aaaa") -- 


constructor-arg index="0" value="小黑" /constructor-arg constructor-arg index="1" value="3" /constructor-arg /bean !-- Dog dog2=new Dog(aaaa,bbb) --

 

其实就是描述bean的取值局限,和bean的有用时候,是经由过程设置装备摆设文件来设定的

 

bean id= dog   >

 

  /bean

 

 不写scope代表是单例设计模式(单个实例即个对象)

 

注:

 

scope= xx 代表感化域 

 

1)scope= singleton  单例的无论拿若干个对象,组织方式只走一次,且对象的内存地址都是沟通的

 

 我此次挪用是这个对象,下次在挪用也是这个对象

 

2)scope= prototype  每次都建立一个新的对象,组织方式走多次,且对象的内存地址都是不沟通的

 

 每次挪用都是新的对象

bean的初始化时候

 

其实就是spring建立javabean的时候

 

1)scope= prototype  建立javabean的时候,每次获取对象实例时,都邑建立.getBean( dog );每次这步都邑建立一个对象

 

2) scope= singleton  凭据bean标签的属性值来选择建立时候 

 

scope= singleton  lazy-init= true  单例的,且延迟建立对象.getBean( dog );这步才建立对象

 

scope= singleton  lazy-init= false  单例的,非延迟建立对象,在类被容器加载时就建立了

 

注:假如不写lazy-init代表false,被容器加载时就建立。

界说多个设置装备摆设文件

当设置装备摆设文件有多个时,我们可以把它们整合在一个设置装备摆设里面

applicationContext.xml: 

applicationContext2.xml

 ?xml version="1.0" encoding="UTF-8"? 

 beans xmlns="http://www.springframework.org/schema/beans" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans.xsd" 

 import resource="/applicationContext2.xml"/ 

 /beans 

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11700.html

cgojavaxml