how2j.cn

在上例中,对Category的name属性注入了"category 1"字符串
在本例中 ,对Product对象,注入一个Category对象

相关下载
文件名 文件大小
spring.rar 12m
使用站长秘制下载工具
步骤 1 : 先运行,看到效果,再学习   
步骤 2 : Product.java   
步骤 3 : applicationContext.xml   
步骤 4 : TestSpring   

步骤 1 :

先运行,看到效果,再学习

老规矩,先下载右上角的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
步骤 2 :

Product.java

Product类中有对Category对象的setter getter
package com.how2java.pojo; public class Product { private int id; private String name; private Category category; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } }
步骤 3 :

applicationContext.xml

在创建Product的时候注入一个Category对象
注意,这里要使用ref来注入另一个对象
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean name="c" class="com.how2java.pojo.Category"> <property name="name" value="category 1" /> </bean> <bean name="p" class="com.how2java.pojo.Product"> <property name="name" value="product1" /> <property name="category" ref="c" /> </bean> </beans>
步骤 4 :

TestSpring

通过Spring拿到的Product对象已经被注入了Category对象了
TestSpring
package com.how2java.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.how2java.pojo.Product; public class TestSpring { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" }); Product p = (Product) context.getBean("p"); System.out.println(p.getName()); System.out.println(p.getCategory().getName()); } }
package com.how2java.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.how2java.pojo.Product;

public class TestSpring {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });

		Product p = (Product) context.getBean("p");

		System.out.println(p.getName());
		System.out.println(p.getCategory().getName());
	}
}



问答区域    
2017-08-08 非常奇怪,这个项目修改代码结果不变呢?
realjasonvon



只能上传一个截图啊。 压缩包中自带bin文件夹,如果删掉,run as java application程序运行如图所示:错误: 找不到或无法加载主类 com.how2java.test.TestSpring 如果不删掉bin文件夹,那么程序无论怎么修改,输出都是category 1。甚至main里面随便打印都无法输出来。 这是为什么呢?
package com.how2java.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.how2java.pojo.Product;

public class TestSpring {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
        System.out.println("666");
        Product product = (Product) context.getBean("p");

        System.out.println(product.getName());
    }
}
错误: 找不到或无法加载主类 com.how2java.test.TestSpring


4 个答案

dwq 答案时间:2017-09-07
估计你已经解决这个问题了,我也遇到过,我是怎么解决的:导入一个叫commons-logging-1.2.jar的包就行了,没有的话可以百度

realjasonvon 答案时间:2017-08-09
代码保存过了,随时都会按ctrl+s
看截图也能看出来,假如没保存,截图中文件名前面会带星号的。

how2j 答案时间:2017-08-09
对的呢,要保存,IDE才会自动编译,生成class文件哦,亲

ricardoo 答案时间:2017-08-08
修改之后的文件要保存之后再运行




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-05-27 在用spring创建Product对象的时候,Category的对象也被创建了么
tomoya
如题




4 个答案

scotthwang 答案时间:2017-09-19
试试就知道了。按照xml顺序实例化的对象。之后需要什么再从bean库里面取就行。 测试输出: 九月 19, 2017 5:16:47 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1c68925: defining beans [p,c]; root of factory hierarchy 创建Product 创建Category category 1

ha哈哈 答案时间:2017-09-06
如果是吧这两个bean位置调换一下呢,就是先定义Product,然后再创建category <bean name="p" class="com.how2java.pojo.Product"> <property name="name" value="product1" /> <property name="category" ref="c" /> </bean> <bean name="c" class="com.how2java.pojo.Category"> <property name="name" value="category 1" /> </bean>

how2j 答案时间:2017-06-13
在配置文件里有这么一行: <bean name="c" class="com.how2java.pojo.Category"> <property name="name" value="category 1" /> </bean> 无论是否创建Product对象,Category对象都会被创建

stevenliyijun 答案时间:2017-06-13
<bean name="c" class="com.how2java.pojo.Category"> <property name="name" value="category 1" /> </bean> 读到这个配置的时候c就被创建并保存在Spring的Bean库里面了, 再之后Product的配置 <property name="category" ref="c" />只是从Bean库里面把c调出来给Product的category用,这个就是注入了。




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-04-13 学习心得




提问之前请登陆
关于 JAVA 框架-Spring-注入对象 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 661682521
站长会在每个工作日早上回答所有的提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图