Spring4-Bean依赖

1.创建Maven项目,项目名称springdemo37,如图所示

2.配置Maven,修改项目中的pom.xml文件,修改内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>1.0.0</modelVersion>
  <groupId>shequ</groupId>
  <artifactId>springdemo13</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
  	<java.version>1.7</java.version>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  
  <repositories>
  	<repository>
  		<id>codelds</id>
  		<url>https://code.lds.org/nexus/content/groups/main-repo</url>
  	</repository>
  </repositories>
  
  <dependencies>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.10</version>
  	</dependency>
  
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>4.1.4.RELEASE</version>
  	</dependency>
  
  	<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>
       
  </dependencies>
  <build/>
</project>

3.在src/main/java下创建实体Bean Forum,包名(com.mycompany.shequ.bean)如图所示

4.实体Bean Forum的内容如下

package com.mycompany.shequ.bean;

public class Forum {
	private int fid;
	private String name;
	private int displayOrder;
	public int getDisplayOrder() {
		return displayOrder;
	}
	public void setDisplayOrder(int displayOrder) {
		this.displayOrder = displayOrder;
	}
	public int getFid() {
		return fid;
	}
	public void setFid(int fid) {
		this.fid = fid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "{fid=>"+this.fid+",name=>"+this.name+",displayOrder=>"+this.displayOrder+"}";
	}
}

5.在src/main/java下创建实体Bean ForumPost,包名(com.mycompany.shequ.bean)如图所示

6.实体Bean ForumPost的内容如下

package com.mycompany.shequ.bean;

public class ForumPost {
	private int pid;
	private String name;
	private Forum forum;
	public int getPid() {
		return pid;
	}
	public void setPid(int pid) {
		this.pid = pid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Forum getForum() {
		return forum;
	}
	public void setForum(Forum forum) {
		this.forum = forum;
	}
}

7.在src/main/resource下创建bean的配置文件spring-bean.xml,如图所示

8.配置文件spring-bean.xml的内容如下

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/util
	http://www.springframework.org/schema/util/spring-util-4.0.xsd">

	<!-- depends-on="forumbean":在创建forumpostbean之前必须先创建forumbean -->
	<bean id="forumpostbean" class="com.mycompany.shequ.bean.ForumPost" depends-on="forumbean">
		<property name="pid" value="1"></property>
		<property name="name" value="simple依赖检查"></property>
		<property name="forum" ref="forumbean"></property>
	</bean>

	<bean id="forumbean" class="com.mycompany.shequ.bean.Forum">
		<property name="fid" value="1"></property>
		<property name="name" value="被依赖的bean"></property>
	</bean>

</beans>

9.在src/main/resource下创建核心的配置文件applicationContext.xml,如图所示

10.核心的配置文件applicationContext.xml的内容如下

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

	<import resource="bean/spring-bean.xml"/>

</beans>

11.在src/test/java下创建测试文件AppTest,包名(com.mycompany.shequ.test)如图所示

12.测试文件AppTest的内容如下

package com.mycompany.shequ.test;

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

import com.mycompany.shequ.bean.ForumPost;

public class AppTest {

	@Test
	public void beanTest(){
	    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		ForumPost forumPost = (ForumPost)context.getBean("forumpostbean");
		System.out.println(forumPost);
	}
}	

13.在测试类AppTest的beanTest方法上右键运行,输出结果如图所示

时间: 2025-01-02 15:19:23

Spring4-Bean依赖的相关文章

Spring 4.2 方法注入解决单例Bean的原型Bean依赖问题

当你在单例Bean中使用原型Bean依赖时,注意,依赖在实例化时解析.因此,如果你依赖注入一个原型Bean到单例Bean中,新的原型Bean被实例化然后依赖注入到单例Bean中.提供给单例Bean的原型实例是唯一的. 然而,假设你想单例Bean在运行时多次获取一个新的原型Bean的实例.你不能依赖注入一个原型Bean到你的单例Bean中,因为注入只发生一次,当Spring容器实例化单例Bean时解析并注入它的依赖.如果你在运行时多次需要一个新的原型Bean,可以使用方法注入. 在大多数应用程序情

当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决

在Spring里面,当一个singleton bean依赖一个prototype bean,因为singleton bean是单例的,因此prototype bean在singleton bean里面也会变成单例. 这个怎么解决呢???可以使用Spring提供的lookup-method来注入. 举例说明:先列出相关类:代码中的说明足够说明问题.user类:prototype bean package com.cn.pojo; import java.io.Serializable; publi

开涛spring3(12.2) - 零配置 之 12.2 注解实现Bean依赖注入

12.2  注解实现Bean依赖注入 12.2.1  概述 注解实现Bean配置主要用来进行如依赖注入.生命周期回调方法定义等,不能消除XML文件中的Bean元数据定义,且基于XML配置中的依赖注入的数据将覆盖基于注解配置中的依赖注入的数据. Spring3的基于注解实现Bean依赖注入支持如下三种注解: Spring自带依赖注入注解: Spring自带的一套依赖注入注解: JSR-250注解:Java平台的公共注解,是Java EE 5规范之一,在JDK6中默认包含这些注解,从Spring2.

解决Spring中singleton的Bean依赖于prototype的Bean的问题

在spring bean的配置的时候,可能会出现一个singleton的bean依赖一个prototype的bean.因为singleton的bean只有一次初始化的机会,所以他们的依赖关系页只有在初始化的时候被设置,在这个时候同样会初始化一个prototype的bean,这样就会导致本来是prototype的bean成了singleton了,这种矛盾的解决方案有两个: 1.放弃使用依赖注入,在需要的时候主动向容器申请. 2.利用方法注入 第一种方法显然是不合理的--- 方法注入通常使用look

最近走过的坑 :slf4j 多个实现 hibernate 类型转换异常 bean依赖问题

最近走过的坑 slf4j 多个实现 主要是maven依赖中存在多个slf4j的实现类,在引入的依赖中排除对应的依赖就可以 <dependency> <groupId>xxxxxx</groupId> <artifactId>xxxxxx</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>org.

在spring中简单使用Mockito解决Bean依赖树问题

前提 本文不是针对Mockito的入门教学 ,主要叙述如何简单的使用Mockito解决Bean依赖树问题,对于Mockito的学习请找其他的文章或者查阅官方文档 基本概念 Junit初始化及存在的问题 spring应用在unit test时,test是独立运行的,所以需要自行 init ApplicationContext,启动 Ioc容器. Junit要求:Test类中涉及的所有Spring bean 注入成功才能完成applicationContext初始化,并启动IOC容器,否则无法执行u

spring4之依赖注入的三种方式

1.Setter注入 <bean id="helloWorld" class="com.jdw.spring.beans.HelloWorld"> <property name="name" value="Spring"></property> </bean> 从这给最简单的配置可以得出以下两个结论:一.class属性需要全类名进行配置,说了ioc容器是通过反射进行创建bean的

Spring Bean依赖但注入(autowired或resource)时NullPointerException(xml和annotation混用的场景下)

项目中同时使用了xml和annotation的方式管理Spring Bean 启动时候报NullPointerException,依赖注入失败! 参考: http://fly0wing.iteye.com/blog/2083398

Spring bean依赖注入、bean的装配及相关注解

依赖注入 Spring主要提供以下两种方法用于依赖注入 基于属性Setter方法注入 基于构造方法注入 Setter方法注入 例子: public class Communication { private Messaging messaging; /* * DI via Setter */ public void setMessaging(Messaging messaging){ this.messaging = messaging; } public void communicate(){

spring4 - bean

<?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:util="http://www.springframework.org/schema