码迷,mamicode.com
首页 > 编程语言 > 详细

Spring beande装配

时间:2019-04-04 12:35:31      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:xmla   private   通过   style   rgs   cti   name   静态   lazy   

  对象的个数,对象创建的时机

一 bean的装配(xml方式1)

1.对象创建:单例、多例

  scope="singleton" 默认值 单例

  scope="prototype",多例

2.什么时候创建

  scope="prototype" 在使用到对象时,才创建对象

  scope="singleton" 在启动(容器初始化之前),创建bean,整个应用只有一个对象

3.是否延迟加载

  lazy-init="default" 默认为false不延迟,启动时创建

  lazy-init="true" 延迟,启动时不创建,使用时创建

4.创建对象之后的初始化与销毁

  init-method ="对象自定义的init方法名称"

  destroy-method="对象自定义的destroy方法名称"

在applicationContext.xml文件中

<!--1.无参构造-->
<!--单例模式,默认的设置,在加载容器之前bean中的对象就会被创建-->
<bean id="user1",class="XXX.User" scope="singleton">
<!--多例模式,在加载容器之后,bean中的对象才会被创建,不管是否调用applictionContext.getBean()-->
<bean id="user2",class="XXX.User" scope="prototype">
<!--多例模式延迟加载,在调用applictionContext.getBean()之后,对象才会被创建-->
<bean id="user3",class="XXX.User" scope="prototype" lazy-init="true">
class User{
    private int id;
    private String name;
    public User(){
    }
    public User(int id,String name){
    this.id=id;
    this.name=name;
    }
  public void initUser(){
  System.out.println("初始化");
  }  
  public void destroyUser(){
  System.out.println("对象销毁");
  }  

//get and set

//toString()
}
class UserFactory{
    public User getInstance(){
        return new User();
    }

    public static User getStaticInstance(){
        return new User();
    }
}

二、bean的装配(xml方式2)

Spring IOC容器

  Spring IOC容器:是Spring的核心内容

  作用:创建对象,处理对象的依赖关系

  

  IOC容器创建对象

  几种方式:

  1.调用无参构造

  2.带参数构造

  3.工厂创建对象

    工厂类:静态方法创建对象

        非静态方法创建对象

<!--1.无参构造-->
<!--单例模式,默认的设置,在加载容器之前bean中的对象就会被创建-->
<bean id="user1",class="XXX.User" scope="singleton">
<!--多例模式,在加载容器之后,bean中的对象才会被创建,不管是否调用applictionContext.getBean()-->
<bean id="user2",class="XXX.User" scope="prototype">
<!--多例模式延迟加载,在调用applictionContext.getBean()之后,对象才会被创建-->
<bean id="user3",class="XXX.User" scope="prototype" lazy-init="true">

<!--2.参数构造-->
<bean id="str" calss="java.lang.String">
    <constructor-arg   value="Tom" ></constructor-arg>
</bean>
<bean id="user4" calss="java.lang.String">
    <constructor-arg index="0" value="998" type="int"></constructor-arg>
    <constructor-arg index="1" ref="s"></constructor-arg>
</bean>


<!--3.工厂模式创建对象 -->
<!--工厂模式创建对象,使用非静态方法-->
<bean id="factory",class="XXX.UserFactory" >
<bean id="user5",factory-bean="factory" factory-method="getInstance">

<!--工厂模式创建对象,使用静态方法-->
<bean id="user6",calss="XXX.UserFactory" factory-method="getStaticInstance">

三、bean的装配(xml方式3)

  对象依赖关系

  DI,依赖注入

  1.通过构造

  2.通过set方法对属性注入

  3.p名称空间

<!--1.参数构造-->
<bean id="user1" calss="xxx.User">
    <constructor-arg index="0" value="998" type="int"></constructor-arg>
    <constructor-arg index="1" value="Tom" type="java.lang.String"></constructor-arg>
</bean>

<bean id="str" calss="java.lang.String">
    <constructor-arg   value="Tom" ></constructor-arg>
</bean>
<bean id="user2" calss="xxx.User">
    <constructor-arg index="0" value="998" type="int"></constructor-arg>
    <constructor-arg index="1" ref="s"></constructor-arg>
</bean>

<!--2.通过set方法对属性注入-->
<bean id="user3" calss="xxx.User">
    <property name="id" value="998"></property>
    <property name="name" value="Tom "></property>
</bean>

 

Controller/Service/Dao开发

java类

class Test{
    
    public static void main(String[] args){
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");//注意文件的路径
        UserAction userAction=(UserAction) applicationContext.getBean("userAction");
        userAction.adddUser();
    }
}
//UserController.java
class UserController{

    UserService userService;

    private void setUserService(UserService userService){
        this.userService=userService;
    }

    private void addUser(){
        userService.save();
    }
}
//UserService.java
class UserService {

    private UserDao userDao;

    private void setUserDao (UserDao userDao){
        this.userDao=userDao;
    }

    private void save(){
        userDao.save();
    }
}
//UserDao .java
class UserDao {

    public void save(){
       System.out.println("正在保存");
    }
}

 


注入controller、service、dao方式1
applicationContext.xml文件 

<!--
Controller --> <bean id="userController" calss="xxx.UserController"> <property name="userService" ref="userService"></property> </bean> <!-- Service --> <bean id="userService " calss="xxx.UserService r"> <property name="userDao" ref="userDao"></property> </bean> <!-- Dao --> <bean id="userDao" calss="xxx.UserDao"> </bean>

 


注入controller、service、dao方式2
applicationContext.xml文件
<!--  Controller -->
<bean id="userController2" calss="xxx.UserController">
    <property name="userService" >
        <bean calss="xxx.UserService></bean>
            <property name="userDao" >
                <bean calss="xxx.UserDao></bean>
            </property>
    </property>
</bean>    

 

Spring beande装配

标签:xmla   private   通过   style   rgs   cti   name   静态   lazy   

原文地址:https://www.cnblogs.com/sunupo/p/10654061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!