java之spring之对象的创建

Posted vincent-yuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之spring之对象的创建相关的知识,希望对你有一定的参考价值。

首先提供目录结构如下:

技术图片

下面提供各文件代码,以供参考:

UserDynamicFactory.java

技术图片
 1 package cn.sxt.factory;
 2 
 3 import cn.sxt.vo.User;
 4 
 5 /**
 6  *     ?????????????????
 7  *
 8  */
 9 public class UserDynamicFactory 
10     public User createUser(String name,int age)
11         return new User(name,age);
12     
13 
View Code

UserFactory.java

技术图片
 1 package cn.sxt.factory;
 2 
 3 import cn.sxt.vo.User;
 4 /**
 5  * 
 6  */
 7 public class UserFactory 
 8     public static User createUser(String name,int age)
 9         return new User(name,age);
10     
11 
View Code

User.java

技术图片
 1 package cn.sxt.vo;
 2 
 3 
 4 public class User 
 5     private String name;
 6     private int age;
 7     public User() 
 8     
 9     public User(String name, int age) 
10         super();
11         this.name = name;
12         this.age = age;
13     
14     public String getName() 
15         return name;
16     
17     public void setName(String name) 
18         this.name = name;
19     
20     public int getAge() 
21         return age;
22     
23     public void setAge(int age) 
24         this.age = age;
25     
26     @Override
27     public String toString() 
28         return "User [name=" + name + ", age=" + age + "]";
29     
30 
View Code

beans.xml

技术图片
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd">
 6     <!-- 通过有参构造方法创建对象 -->
 7     <bean id="u1" class="cn.sxt.vo.User">
 8         <!-- 通过参数的下标来设置参数  下标从0开始 -->
 9         <constructor-arg index="0" value="张三疯"/>
10         <constructor-arg index="1" value="33"/>
11     </bean>
12     <bean id="u2" class="cn.sxt.vo.User">
13         <!-- 通过参数的名称来设置参数   name表示参数名称  -->
14         <constructor-arg name="name" value="张三疯"/>
15         <constructor-arg name="age" value="33"/>
16     </bean>
17     <bean id="u3" class="cn.sxt.vo.User">
18         <!-- 通过参数的类型来设置参数   type表示参数类型  -->
19         <constructor-arg type="java.lang.String" value="张三疯"/>
20         <constructor-arg type="int" value="33"/>
21     </bean>
22     <bean id="u4" class="cn.sxt.vo.User">
23         <property name="name" value="张无忌"/>
24         <property name="age" value="23"/>
25     </bean>
26     <!-- 通过静态工厂创建对象 -->
27     <bean id="u5" class="cn.sxt.factory.UserFactory" factory-method="createUser">
28         <constructor-arg type="java.lang.String" value="张三疯"/>
29         <constructor-arg type="int" value="33"/>
30     </bean>
31     <!-- 通过动态工厂来创建对象 -->
32     <bean id="factory" class="cn.sxt.factory.UserDynamicFactory"/>
33     <bean id="u6" factory-bean="factory" factory-method="createUser">
34         <constructor-arg type="java.lang.String" value="张三疯"/>
35         <constructor-arg type="int" value="33"/>
36     </bean>
37 </beans>
View Code

SpringTest.java

技术图片
 1 package cn.sxt.spring;
 2 
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 import cn.sxt.vo.User;
 8 
 9 public class SpringTest 
10     @Test
11     public void testHello()
12         //????????
13         ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
14         User u=(User)ac.getBean("u6");
15         System.out.println(u);
16     
17 
View Code

 

一.通过构造方法来创建对象

1. 通过参数下标来设置参数的值

<!-- 通过有参构造方法创建对象 -->
    <bean id="u1" class="cn.sxt.vo.User">
        <!-- 通过参数的下标来设置参数  下标从0开始 -->
        <constructor-arg index="0" value="张三疯"/>
        <constructor-arg index="1" value="33"/>
    </bean>

2.通过参数名称来设置

<bean id="u2" class="cn.sxt.vo.User">
        <!-- 通过参数的名称来设置参数   name表示参数名称  -->
        <constructor-arg name="name" value="张三疯"/>
        <constructor-arg name="age" value="33"/>
    </bean>

 3.通过参数类型来设置

<bean id="u3" class="cn.sxt.vo.User">
        <!-- 通过参数的类型来设置参数   type表示参数类型  -->
        <constructor-arg type="java.lang.String" value="张三疯"/>
        <constructor-arg type="int" value="33"/>
    </bean>

 

二. 通过无参构造方法来创建对象

<bean id="u4" class="cn.sxt.vo.User">
        <property name="name" value="张无忌"/>
        <property name="age" value="23"/>
    </bean>

注意:需要提供无参构造器,并且属性要有对应的set方法

三. 通过静态工厂来创建对象

静态工厂类:

/**
 * 静态工厂方法 
 *     通过静态工厂来创建对象
 */
public class UserFactory 
    public static User createUser(String name,int age)
        return new User(name,age);
    

配置文件

<!-- 通过静态工厂创建对象 -->
    <bean id="u5" class="cn.sxt.factory.UserFactory" factory-method="createUser">
        <constructor-arg type="java.lang.String" value="张三疯"/>
        <constructor-arg type="int" value="33"/>
    </bean>

四.通过动态工厂来创建对象

动态工厂类

/**
 *     动态工厂来创建对象
 *
 */
public class UserDynamicFactory 
    public User createUser(String name,int age)
        return new User(name,age);
    

配置文件

<!-- 通过动态工厂来创建对象 -->
    <bean id="factory" class="cn.sxt.factory.UserDynamicFactory"/>
    <bean id="u6" factory-bean="factory" factory-method="createUser">
        <constructor-arg type="java.lang.String" value="张三疯"/>
        <constructor-arg type="int" value="33"/>
    </bean>

 

以上是关于java之spring之对象的创建的主要内容,如果未能解决你的问题,请参考以下文章

java之spring

Java框架之Spring

java之spring之依赖注入

Spring之IocBeanScope讲解

Java Spring5之IOC容器

JAVA-Spring框架之IOC(DI)