spring笔记一详解编程语言

Spring最有用的处所就是IOC固然代码很简单,但现实上最有效。

IoC是什么?

 

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" class="com.chinasofti.jingtai.StaticFactory"  
           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" class="com.chinasofti.putong.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" class="com.gouzao.Dog"> 
    <constructor-arg index="0" value="小白"></constructor-arg> 
    </bean> 
    <!-- Dog dog =new Dog("aaaa") --> 
 
 
    <bean id="dog2" class="com.gouzao.Dog"> 
    <constructor-arg index="0" value="小黑"></constructor-arg> 
    <constructor-arg index="1" value="3"></constructor-arg> 
    </bean>  
    <!-- Dog dog2=new Dog(aaaa,bbb) --> 
 
 
    <bean id="dog3" class="com.gouzao.Dog"></bean> 
    <!-- Dog dog =new Dog() -->

Dog 

public class Dog { 
    String name; 
    int age; 
 
    public Dog(){ 
         
        System.out.println("默认组织方式。。。。。"); 
    } 
 
  public Dog(String str){ 
        name=str; 
        System.out.println("自界说组织方式。。。。。str="+str+",age="+age); 
    } 
     
  public Dog(String str,int a){ 
        name=str; 
        age=a; 
        System.out.println("自界说组织方式。。。。。str="+str+",age="+age); 
    } 
 
    public void jiao(){ 
        System.out.println("wangwang!!!+str="+name+",age="+age); 
    } 
 
}

bean的感化域

 

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

 

<bean id=“dog”    class=“com.chinasofti.beanManage.Dog” scope=“singleton”    lazy-init=“false”>

 

 </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/tech/pnotes/11700.html

(0)
上一篇 2021年7月19日 11:45
下一篇 2021年7月19日 11:45

相关推荐

发表回复

登录后才能评论