文档章节

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

O
 ORZ你好
发布于 2017/08/24 20:19
字数 579
阅读 4
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
45分钟前
1
0
redis 系列一 -- 简介及安装

1.简介 redis -- remote dictionary server 远程字典服务 使用 C 语言编写; 高性能的 key-value数据库; 内存数据库,支持数据持久化。 Redis 是一个开源(BSD许可)的,内存中的数据结构存...

imbiao
今天
3
0
nginx log记录请求响应时间

有时为了方便分析接口性能等,需要记录请求的时长,通过修改nginx的日志格式可以做到,如 添加一个新的log_format log_format timed_combined '$remote_addr - $remote_user [$time_local] "...

swingcoder
今天
4
0
Spring MVC之RequestMappingHandlerMapping匹配

对于RequestMappingHandlerMapping,使用Spring的同学基本都不会陌生,该类的作用有两个: 通过request查找对应的HandlerMethod,即当前request具体是由Controller中的哪个方法进行处理; 查...

爱宝贝丶
今天
3
0
Java Web--增删改查之二界面后台java代码(转载参考)

/** *  *//** * @author Administrator * */package dao; import java.sql.*;public class DBConn {/** * 链接数据库 * @return */  ...

小橙子的曼曼
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部