当前位置: 首页 > wzjs >正文

西安招商型网站建设免费网站建设软件

西安招商型网站建设,免费网站建设软件,中山祥云做的网站,wordpress的alt属性插件Spring基础05 Bean的作用域 bean的作用域官网图示&#xff1a; Bean的作用域分类&#xff1a; 单例模式&#xff1a;Spring的默认机制&#xff0c;每次从容器中取出的都是同一个对象。 <!-- 默认为单例模式 --> <bean id"address" class"Address&qu…

Spring基础05

Bean的作用域

  1. bean的作用域官网图示:

    在这里插入图片描述

  2. Bean的作用域分类:

    • 单例模式:Spring的默认机制,每次从容器中取出的都是同一个对象。

      <!-- 默认为单例模式 -->
      <bean id="address" class="Address"  scope="singleton">
      </bean>
      

      在这里插入图片描述

    • 原型模式:每次从容器中get的时候,都会产生一个新对象。

      <!-- 原型模式 -->
      <bean id="address" class="Address"  scope="prototype">
      </bean>
      

      在这里插入图片描述

    • 其余request,session,application这些只能在web开发中使用到!

  3. Bean的自动装配:

    • 自动装配是Spring满足bean依赖的一种方式!

    • Spring会在上下文中自动寻找,并自动给bean装配属性!

    • 在Spring中自动装配的方式:

      • 在xml中显示的配置。
      • 在java中显示配置。
      • 隐式的自动装配bean。
    • 使用注解实现自动装配:

      • Spring2.5支持注解。
  4. xml配置代码示例:

    • 编写实体类:
    public class Cat {public void shout(){System.out.println("miao~");}
    }
    
    public class Dog {public void shout(){System.out.println("wang~");}
    }
    
    public class People {private Cat cat;private Dog dog;private String name;public Cat getCat() {return cat;}public void setCat(Cat cat) {this.cat = cat;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "People{" +"cat=" + cat +", dog=" + dog +", name='" + name + '\'' +'}';}
    }
    
    • 编写spring配置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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="cat" class="Cat"></bean><bean id="dog" class="Dog"></bean><bean id="people" class="People"><property name="name" value="张三"></property><property name="cat" ref="cat"></property><property name="dog" ref="dog"></property></bean> </beans>
    
     <!-- byName: 会自动在容器上下文中查找,和自己对象set方法后面值对应的beanid--><bean id="people" class="People" autowire="byName"><property name="name" value="张三"></property></bean> ><!-- byType: 会自动在容器上下文中查找,和自己对象属性类型相同的beanid--><bean id="people" class="People" autowire="byType"><property name="name" value="张三"></property></bean>
    
    • 编写测试类:
    import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("beans.xml");People people = (People) classPathXmlApplicationContext.getBean("people");people.getDog().shout();people.getCat().shout();}
    }
    
    • 注意点:

      • byName的时候,需要保证所有的bean的id唯一,并且这个bean需要和自动注入的属性的set方法值一致。
      • byType的时候,需要保证所有的bean的class唯一,并且这个bean需要和自动注入的属性的类型一致。
  5. 自动装配xml代码示例:

    • 使用注解须知:

      1. 导入约束: context约束。

        <beans        xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="pring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd">
        </beans>
        
      2. 配置注解的支持: context:annotation-config/ 。

        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><context:annotation-config/><bean id="cat" class="Cat"></bean><bean id="dog" class="Dog"></bean><bean id="people" class="People"></bean>
        </beans>
        
        public class People {@Autowiredprivate Cat cat;@Autowired // 可以在set方法上使用private Dog dog;private String name;public Cat getCat() {return cat;}public Dog getDog() {return dog;}public String getName() {return name;}public void setName(String name) {this.name = name;}
        }
        
      3. 如果自动装配场景比较复杂,无法只使用@Autowired注解完成时,我们可以使用@Qualifier(value=“xxx”)去配合@Autowired使用,指定一个唯一的bean对象注入!

        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;public class People {@Autowiredprivate Cat cat;@Autowired@Qualifier(value = "dog1")private Dog dog;private String name;}
        
      4. @Resource注解

        import javax.annotation.Resource;public class People {private Cat cat;@Resource(name = "dog1")private Dog dog;private String name;
        }
        
      5. @Resource和@Autowired的区别:

        • 都是可以用来自动装配,都可以放在属性字段上。

        • @Autowired通过byType的方式实现,必须存在这个类型的对象,如果一种类型对应多个对象,则搭配@Qualifier(value=“xxx”)使用。

        • @Resource默认通过byName的方式实现,如果找不到名字,则通过byType实现,如果两种都找不到就会报错,使用@Resource(name = “xxx”)解决报错。

http://www.dtcms.com/wzjs/781451.html

相关文章:

  • 建设银行代发工资网站湛江企业网站
  • 青岛微信网站建设询价网站哪个好
  • 上海设计网站大全泗阳住房建设局网站
  • 自建wordpress tag标签页面如何做网站优化
  • 做那个免费视频网站南充市企业网站建设
  • 知识付费网站开发教程外发加工会计分录
  • 硬件开发一站式平台wordpress批量添加分类
  • 外行怎么做网站网站建设公司实力
  • 药品在网站上做标签有哪些分类ajax做网站
  • 佛山市专注网站建设平台山东青岛网站设计公司
  • 如何制作收费网站杭州做网站的公司排行
  • 重庆网站建设 优化建设网站需要api吗
  • 静态网站举例wordpress自定义右键
  • 网站安全狗wordpress postfix
  • 网站建设专业就业前景wordpress汉化管理界面
  • 网站开发的关键技术有哪些教育网站设计案例
  • 网站优化培训学校深圳建设岗位证书报名网站
  • 网站建设成功案例书籍注册自己的网站怎么注
  • 网站仿静态和静态的区别网站备案的好处有哪些
  • 太原seo推广网站解析慢 优化
  • 网站建成建筑工程论坛网
  • 陕西正天建设有限公司网站营销网站制作要素
  • 网站建设完整在线空间设计
  • 手机网站后台怎么进百度网页版入口在线登录
  • 北京网站建设公司公司免费微信网站模板下载工具
  • 购物网站后台管理系统模板网站建设需要技术
  • 互联网服务平台seo关键词优化价格
  • 潍坊企业建站系统快速学电脑培训班
  • 网站建设概述网站开发与设计英文文献
  • 郑州搜狗网站建设快速app开发平台