`
琛哥哥
  • 浏览: 32826 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

spring配置bean注入为空的问题,求帮助

    博客分类:
  • java
 
阅读更多
自己写了一个小demo准备玩玩的。flex+spring+ibatis 结果刚开发,就碰到了个困难,试了好久,始终不如意。我想把spring配置文件放到WEB-INF下的conf文件夹里。把一些bean的配置文件放到WEB-INF下的beanConf文件夹里. 小程序测试的时候,发现BookController里的bookService总为空。试了很多方法,始终不知道如何解决。请帮忙,贴出代码:目录结构:

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

    <display-name>FirstFlex</display-name>
    <description>BlazeDS Application</description>

	<context-param>
		<param-name>flex.class.path</param-name>
		<param-value>/WEB-INF/flex/hotfixes,/WEB-INF/flex/jars</param-value>
	</context-param>
	
	<!-- 加载Spring文件配置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/conf/demo_applicationContext.xml,/WEB-INF/beanConf/*.bean.xml
		</param-value>
	</context-param>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

    <!-- Http Flex Session attribute and binding listener support -->
    <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>

    <!-- MessageBroker Servlet -->
    <servlet>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <display-name>MessageBrokerServlet</display-name>
        <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
        <init-param>
            <param-name>services.configuration.file</param-name>
            <param-value>/WEB-INF/flex/services-config.xml</param-value>
       </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
    </welcome-file-list>

    <!-- for WebSphere deployment, please uncomment -->
    <!--
    <resource-ref>
        <description>Flex Messaging WorkManager</description>
        <res-ref-name>wm/MessagingWorkManager</res-ref-name>
        <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    -->

</web-app>


demo_applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<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-2.5.xsd">

	<!-- 数据源配置 -->
	<bean id="dataSource_config" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location">
			<value>classpath:dataBaseContext.properties</value>
		</property>
	</bean>
	 
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	    <property name="driverClassName">
	        <value>${datasource.driverClassName}</value>
	    </property>
	    <property name="url">
        	<value>${datasource.url}</value>
	    </property>
	    <property name="username">
	        <value>${datasource.username}</value>
	    </property>
	    <property name="password">
	        <value>${datasource.password}</value>
	    </property>
	</bean>
	
	<bean id="sqlMapClient"
        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
	    <property name="configLocation">
	    	<value>/WEB-INF/classes/sqlmap-config.xml</value>
	    </property>
	    <property name="dataSource">
	    	<ref bean="dataSource"/>
	    </property>  
	 </bean>
	 
	<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
	    <property name="sqlMapClient">
	        <ref bean="sqlMapClient" />
	    </property>
	</bean>
	
	<!-- 业务指标定义 -->
	<bean id="bookController"
		class="com.crud.controller.BookController">
		<property name="bookService"
			ref="bookService">
		</property>
		<!-- <property name="sybasejdbcTemplate" ref="sybasejdbcTemplate"/> -->
	</bean>
	<bean id="bookService"
		class="com.crud.service.impl.BookServiceImpl">
		<property name="sqlMapClientTemplate">
        	<ref bean="sqlMapClientTemplate" />
    	</property>
	</bean>
	
</beans>


BookController.java

package com.crud.controller;

import java.util.List;
import java.util.UUID;

import com.crud.model.Book;
import com.crud.service.BookService;
import com.crud.service.impl.BookServiceImpl;

public class BookController {
	
	private BookService bookService;
	
	public List<Book> findBooks(){
		return bookService.findBook();
	}
	
	public String addBook(Book book){
		//bookService = new BookServiceImpl();
		System.out.println("addBook");
		System.out.println(bookService);
		book.setId(UUID.randomUUID().toString());
		String temp = bookService.addBook(book);
		System.out.println(bookService);
		return temp;
	}
	
	public void updateBook(Book book){
		
	}
	
	public void deleteBook(Book book){
		
	}

	public BookService getBookService() {
		return bookService;
	}

	public void setBookService(BookService bookService) {
		this.bookService = bookService;
	}
}



BookService.java
package com.crud.service.impl;

import java.util.List;

import org.springframework.orm.ibatis.SqlMapClientTemplate;

import com.crud.model.Book;
import com.crud.service.BookService;

public class BookServiceImpl implements BookService {
	
	private SqlMapClientTemplate sqlMapClientTemplate;

	public String addBook(Book book) {
		System.out.println(sqlMapClientTemplate);
		sqlMapClientTemplate.insert("addBook",book);
		return "1";
	}

	public void deleteBook(Book book) {

	}

	public List<Book> findBook() {
		
		List<Book> list = sqlMapClientTemplate.queryForList("bookInfo");
		return list;
	}

	public String updateBook(Book book) {
		return null;
	}

	public SqlMapClientTemplate getSqlMapClientTemplate() {
		return sqlMapClientTemplate;
	}

	public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate) {
		this.sqlMapClientTemplate = sqlMapClientTemplate;
	}

}



每次BookController.java里的addBook() 里的bookService都是null,
工程在附件里,求帮助
  • 大小: 47.7 KB
分享到:
评论

相关推荐

    详解Spring 中如何控制2个bean中的初始化顺序

    在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 问题场景 在实际开发中,我们经常会遇到...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    综上所述,Spring Bean重复执行两次的问题通常是由于配置错误、依赖注入循环、初始化回调的不当使用、静态工厂方法的误用、AOP代理的配置问题或是Bean作用域设置不准确导致的。通过仔细检查和修正这些问题,可以避免...

    线程中获取spring 注解bean

    线程中的操作往往涉及到多线程环境下的资源共享和管理,因此,如何在线程中正确地获取并使用Spring通过注解注入的对象,是一个常见的问题。本文将详细探讨这个主题。 首先,Spring的注解主要分为三类:配置注解(如...

    spring static静态方法里面注入bean空指针解决

    在Spring框架中,静态方法内部注入Bean导致空指针异常是一个常见的问题,特别是在处理较旧的项目时。这里我们分析两种解决这个问题的方法。 首先,让我们深入理解问题的原因。在Spring中,`@Autowired`注解用于自动...

    spring的bean加载顺序样例项目

    - **依赖注入**:Spring首先处理Bean之间的依赖关系,根据`ref`属性或者@Autowired注解进行依赖注入。如果存在循环依赖,Spring会采用提前暴露的草案实例(Eager Initialization)来解决。 - **初始化方法**:...

    Spring Bean 加载顺序 .

    Spring会首先读取这些配置源,将其转换为Bean定义。 2. **Bean定义注册**: 解析后的配置会被转化为BeanDefinition对象,包含Bean的类名、依赖、初始化方法等信息。这些BeanDefinition被注册到Spring的...

    面试官常问的spring依赖注入和bean的装配问题.pdf

    显式装配是指在Spring配置文件中明确指定如何注入依赖,包括setter注入和构造器注入,这种方式虽然配置繁琐,但清晰明了,易于管理和维护。在Spring Boot中,尽管自动化配置十分便捷,但仍然可以通过@Primary、@...

    Spring实例化Bean顺序

    2. **依赖注入**:Spring容器会根据Bean之间的依赖关系来决定实例化顺序。如果一个Bean依赖于另一个Bean,那么被依赖的Bean会先被实例化。Spring使用“依赖倒置”的原则,使得控制权从对象内部转移到了外部的容器。 ...

    消息队列监听器无法注入bean的问题解决

    2. **调试代码**:通过断点和日志输出来跟踪`XSApplyIdListener`的生命周期,查看bean注入时是否出现问题。 3. **验证依赖**:确认`XSApplyIdListener`所依赖的其他bean是否已定义并可注入。 4. **更新配置**:根据...

    Spring 多线程下注入bean问题详解

    Spring 多线程下注入 Bean 问题详解 在 Spring 框架中,多线程下注入 Bean 是一个常见的问题。本文将详细介绍 Spring 多线程下注入 Bean 问题,并提供两种解决方案。 问题描述 在多线程环境下,使用 Spring 框架...

    Spring在应用中获得Bean的方法

    Spring 2.5引入了`@Autowired`注解,可以自动将Bean注入到需要的地方。只要在字段、setter方法或构造函数上添加`@Autowired`,Spring就会自动匹配并注入相应的Bean。 ```java public class MyClass { @Autowired...

    spring的setter注入和构造注入(XML讲解以及常见错误)

    4. **注入的bean不存在**:当试图注入一个在XML配置中未定义的bean时,Spring会抛出`NoSuchBeanDefinitionException`。 5. **循环依赖**:两个或多个bean之间存在互相依赖的关系,如果没有正确处理,会导致Spring...

    Spring循环依赖正确性及Bean注入的顺序关系详解

    本文将深入探讨Spring如何处理循环依赖,以及Bean注入的顺序关系。 首先,我们来看一下普通的Bean循环依赖的例子。在给定的代码中,有两个类BeanA和BeanB,它们互相依赖: ```java public class BeanA { private ...

    spring配置文件详解

    接着,`&lt;beans&gt;`标签是Spring配置的根元素,它包含了所有bean的定义。在这个例子中,我们看到多个命名空间的引入: 1. `xmlns:beans` 是Spring核心配置的命名空间,用于定义bean。 2. `xmlns:xsi` 是XML Schema ...

    自己的代码模拟spring的依赖注入

    在IT行业中,Spring框架是Java开发中的一个基石,尤其在控制反转(IoC)和依赖注入(DI)方面。依赖注入是一种设计模式,它允许我们解耦组件,提高代码的可测试性和可维护性。Spring框架通过IoC容器来实现DI,让我们...

    spring依赖注入底层详解

    总的来说,Spring依赖注入的底层机制涉及了反射、AOP和容器管理等多个方面,它有效地解决了对象间的依赖关系问题,提升了代码的可读性和可维护性,是Spring框架的一大亮点。通过深入理解这一机制,开发者可以更好地...

    使用xDoclet自动生成Spring的bean的配置文件

    配置完成后,当你运行`mvn clean install`时,xDoclet将读取源代码,识别出注解,并在指定的目录下生成对应的Spring配置文件。例如,`HelloWorldService`类将会生成一个名为`hello-world-service.xml`的文件,其中...

    Spring Ioc 注解 依赖注入

    随着Spring框架的发展,除了XML配置之外,Spring还引入了注解的方式来简化依赖注入的过程。下面介绍几种常用的依赖注入相关的注解: - **@Component**:用于标记一个普通的Java类为Spring管理的Bean。 - **@Service...

    struts2+spring+hibernate整合中spring注入出错。页面中报空指针异常。高手来看看怎么决绝。

    标题提到的问题是“struts2+spring+hibernate整合中spring注入出错,页面中报空指针异常”,这通常是由于Spring的依赖注入没有正确配置导致的。 首先,让我们深入了解一下Struts2、Spring和Hibernate各自的核心概念...

Global site tag (gtag.js) - Google Analytics