文档章节

SSH入门系列13:bean类引用及范围

O
 ORZ你好
发布于 2017/08/24 20:19
字数 579
阅读 4
收藏 0
点赞 0
评论 0

在Spring中,如果你需要在一个类中定义另一个类。在这种情况下,参数注入时,则需要引用不同的参数。以上文的girl为事例:

  private String girlName;
   private  List<String>  hobbies;
   private Map<String,Integer> score;

随后定义boy.java

   private String name;
    private girl girl;

最后在applicationContext.xml中进行引用:

  <bean id="boy1" class="com.spring.bean.boy">
       <property name="name">
       <value>林惊羽</value>
       </property>
  <property name="girl"  ref="girl1"></property>
  </bean>

测试程序如下:

     boy boy = (boy)ac.getBean("boy1");

     System.out.println(boy.getName()+":妹子姓名是"+boy.getGirl().getGirlName());


      bean的作用域

1)如果没有scope属性,这个bean的作用域是属于共享实例的,所谓共享实例是指所有的 bean对象都引用同一个实例对象。默认bean的 scope值是singleton,简单的说就是:

     boy boy = (boy)ac.getBean("boy1");

   boy boy1 = (boy)ac.getBean("boy1");

boy.equals(boy1) 输出为true;

2)非共享实例:对同一个beanID,每次产生bean的对象都不一样,此时scope的值是prototype

3)web类型:request 和session 都是在web情况下使用,都是一个bean对应一个实例,而且request每次请求都会有各自的request。

如果在web开发中,各个层次的bean做如下引用:

在Dao层

public class UserInfoDao {
   public void add(){
       System.out.println("这是数据库访问类");
   }
}


在Service层

public class UserInfoService  {
    private UserInfoDao userInfoDao;
    public void addService(){
        System.out.println("业务层调用数据库访问层");
        userInfoDao.add();
    }
    public UserInfoDao getUserInfoDao() {
        return userInfoDao;
    }
    public void setUserInfoDao(UserInfoDao userInfoDao) {
        this.userInfoDao = userInfoDao;
    }
}

在action层

public class UserInfoAction {
    public UserInfoService getUserInfoService() {
        return userInfoService;
    }

    public void setUserInfoService(UserInfoService userInfoService) {
        this.userInfoService = userInfoService;
    }

    private UserInfoService  userInfoService;
    
    public void addAction(){
      System.out.println("这是action层调用业务层方法");    
      userInfoService.addService();
    }
}

applicationContext.xml做如下配置:

<!-- 首先配置dao层bean -->
  <bean  id="userInfoDao"  class="com.spring.dao.imp.UserInfoDao">
  </bean>
 
  <!-- 配置service层的bean   autowire 属性名字和bean的名字一样,即可实现 否则需要一个一个property 进行配置 -->
  <bean  id="userInfoService"  class="com.spring.service.UserInfoService"  autowire="byName"></bean>

 <!-- 配置action层的bean -->
<bean id="UserServiceBean"  class="com.spring.action.UserInfoAction"  autowire="byName"></bean>
</beans>

最后如下测试:

   UserInfoAction  userInfo = (UserInfoAction)ac.getBean("UserServiceBean");
               userInfo.addAction();

实际上,spring提供了一种 简化的注入方式 :通过命名空间来实现,实现步骤如下:

           首先在applicationContext.xml加入命名空间:p

          xmlns:p="http://www.springframework.org/schema/tx"

在编写bean的时候,通过简化属性进行注入,

 <!-- 通过命名空间注入 -->
<bean id="girl5"  p:girlName="陆雪琪" class="com.spring.bean.girl">
   </bean>

最后测试和之前一样

© 著作权归作者所有

共有 人打赏支持
O
粉丝 0
博文 15
码字总数 8932
作品 0
南京
《鸡啄米C++编程入门系列》系列技术文章整理收藏

《鸡啄米C++编程入门系列》系列技术文章整理收藏 收藏整理鸡啄米C++编程入门系列文章,供个人和网友学习C++时参考 1鸡啄米:C++编程入门系列之前言 2鸡啄米:C++编程入门系列之一(进制数) ...

开元中国2015
2015/05/26
132
0
Java深入-框架技巧

Java 程序媛手把手教你设计模式中的撩妹神技 -- 上篇 遇一人白首,择一城终老,是多么美好的人生境界,她和他历经风雨慢慢变老,回首走过的点点滴滴,依然清楚的记得当初爱情萌芽的模样…… ...

掘金官方
01/05
0
0
《鸡啄米C++编程入门系列》系列技术文章整理收藏

《鸡啄米C++编程入门系列》系列技术文章整理收藏 1鸡啄米:C++编程入门系列之前言 http://www.lai18.com/content/410454.html 2鸡啄米:C++编程入门系列之一(进制数) http://www.lai18.com...

开元中国2015
2015/06/27
0
0
MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(一)

(本文示例完整源代码与数据库脚本下载地址:http://down.51cto.com/data/1970833) 在MyBatis中,当我们编写好访问数据库的映射器接口后,MapperScannerConfigurer就能自动成批地帮助我们根...

NashMaster2011
2015/01/08
0
0
Jenkins入门系列

enkins 是一个可扩展的持续集成引擎。 主要用于: l 持续、自动地构建/测试软件项目。 l 监控一些定时执行的任务。 Jenkins拥有的特性包括: l 易于安装-只要把jenkins.war部署到servlet容器...

harries
2016/04/21
218
0
Jenkins入门系列

Jenkins 是一个可扩展的持续集成引擎。 主要用于: l 持续、自动地构建/测试软件项目。 l 监控一些定时执行的任务。 Jenkins拥有的特性包括: l 易于安装-只要把jenkins.war部署到servlet容器...

外星人et59
2016/04/21
0
0
SpringBoot 2.0 系列005 --启动实战之SpringApplication应用

SpringBoot 2.0 系列005 --启动实战之SpringApplication应用 2.X 官方示例 注意是只使用了@EnableAutoConfiguration,默认是只扫描这一个我们自定义的类到bean中。不含子包和本包。下一篇我们...

路上有你0314
05/17
0
0
JSF 2 简介,第 1 部分: 流线化 Web 应用程序开发

在朋友的强烈推荐下,开始看JSF2.0。看了第一部分。感觉不是太大。接下来继续学习,应该会有不错的体验。。。 使用 JSF 2 简化导航、免除 XML 配置并轻松访问资源 public class Place { ......

晨曦之光
2012/03/09
0
0
SpringBoot 2.0 系列006 --启动实战之注解使用

SpringBoot 2.0 系列006 --启动实战之注解使用 一些误区说明 网上很多教程默认使用SpringBootApplcation注解,且只用这个即可扫描启动类包下所有的bean。 而官方默认教程使用的是@EnableAuto...

路上有你0314
05/18
0
0
Struts1.2+Spring2.5+Hibernate3.2框架搭建(十三)

(1)、定义工具类ZlkUtil节点 <bean id="ZlkUtil" class="com.zlk.util.ZlkUtil">bean> (2)、定义数据层UsersDaoImpl节点,注入HibernateSessionFactory对象sessionFactory(属性及对应s......

周禄康
2010/04/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
4
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
172
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部