`
diarbao
  • 浏览: 14283 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
有一些摘自 JavaCrazyer 大大的...希望不要介意

Spring 介绍;
Spring是一个IoC容器,利用DI技术管理对象之间的依赖!
IoC: Inversion of Control(控制反转)
DI: Dependency Injection(依赖注入)
Spring也是一个对象工厂,它负责生产(即创建)和管理(比如控制它们的生命周期,或给特定的对象创建代理等等)着各种对象

 控制反转(IoC)
 所谓控制:即获取依赖对象的方式
 假如A要调用B的方法(即A依赖于B),则A首先要获得B对象
 B b = new BImplement();
 A直接依赖于B的具体实现
 B b = Factory.getBInstance();
 A依赖于工厂对象
 上面就是没有“反过来”的情况:A主动获取B对象
 反转
 即如果A要获取B对象,不是由A主动获取B对象,而是由其它人把B送给A(即将B注入给A),因为A依赖于B,所以B是A的依赖对象,因此称“依赖注入(DI)”
 在CMS项目中,我们已经了解了如何通过反射机制,来将某个对象注入到其它对象中!


Spring 配置;
引入spring-framework-3.0.4.RELEASE\dist 下所有的包.再引入一个spring依赖包里. spring依赖包\lib\jakarta-commons 下的 logging的包.
在根目录下写一个beans.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-3.0.xsd">
          <bean id="userAction" class="cn.com.leadfar.UserAction"></bean> 
</beans>

UserActionText.java
public void testAdd() {
BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml"); 
UserAction userAction = (UserAction)factory.getBean("userAction");
userAction.add();}


 这是Spring中的工厂接口
 下面有众多的实现类
 常见的实现类是:ClassPathXmlApplicationContext
-----------------------------------------------------------------------------
<bean id="userAction" class="cn.com.leadfar.UserAction" scope="prototype"></bean>
scope=singleton
 单例
 scope=prototype
 多例
 - singleton:单例,每次getBean从Spring中拿对象都是同一个对象
 - prototype:原型,每次getBean从Spring中拿对象都是一个新的对象

------------------------------------------------------------------------------------
Spring IoC的依赖注入
1) 使用构造方法来注入依赖:比较麻烦  一般不使用

2) 使用setter方法来注入依赖:常用  在class上设置set方法.

3) 集合类型的注入
    <property>
       <set>、<list>、<map>、<props>
    </property>

----------------------------------------------------------------------------
  UserAction
package cn.com.leadfar;

public class UserAction {
	private UserService userSer;
	public void add(){
		System.out.println("add");
		userSer.addUser("1", "2");
	}
	public void setMyService(UserService us){
		this.userSer=us;
	}

}


UserService
package cn.com.leadfar;

public class UserService {
	private UserDao userDao;
	public UserService(UserDao userdao){
		this.userDao=userdao;
		
	}
	public void addUser(String name,String password){
		System.out.println("this is addUser method");
		userDao.save();
	}
	
}

UserDao
package cn.com.leadfar;

import java.util.List;
import java.util.Map;

public class UserDao {
	private String name;
	private int age;
	private List lists;
	private Map maps;
	public void setName(String name) {
		this.name = name;
	}
	public void setLists(List lists) {
		this.lists = lists;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void save(){
		System.out.println("UserDao's method");
		System.out.println(name+","+age+","+lists+","+maps);
	}
	public void setMaps(Map maps) {
		this.maps = maps;
	}

}



beans.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-3.0.xsd">
          <bean id="userAction" class="cn.com.leadfar.UserAction" scope="prototype">
          <property name="myService" ref="userService"></property>
          </bean>
          
          <bean id="userService" class="cn.com.leadfar.UserService" scope="prototype">
          <constructor-arg ref="userDao"></constructor-arg>
          
          </bean>
		  <bean id="userDao" class="cn.com.leadfar.UserDao">
		  <property name="name" value="farewell"></property>
		  <property name="age" value="5000"></property>
		  <property name="lists">
		  <list>
		  <value>123</value>
		  <value>456</value>
		  <value>789</value>
		  </list>
		  </property>
		  <property name="maps">
			<map> <entry key="1" value="just some string"/>
			<entry key="1" value="i want"/>
			<entry key="2" value="catch u"/>
			<entry key="3" value="okey"/>
			<entry key="4" value="afdadf"/>
			</map>		  
		  
		  </property>
		  </bean>
		  

</beans>


输出结果:
add
this is addUser method
UserDao's method
farewell,5000,[123, 456, 789],{1=i want, 2=catch u, 3=okey, 4=afdadf}
-------------------------------------------------------------------------
Spring中的依赖注入:
- 通过注解(annotation)来注入
- 【注意要使用JDK6】

1、首先,配置文件需要增加<context:annotation-config/>配置,如下所示:
<?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: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/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<context:annotation-config/>
</beans>


2、将需要管理的各种对象,定义到Spring配置文件中,如:
	<bean id="userAction" class="cn.com.leadfar.spring.UserAction" scope="prototype">
	</bean>
 	<bean id="userService" class="cn.com.leadfar.spring.UserService">
 	</bean>
 	<bean id="userDao" class="cn.com.leadfar.spring.UserDao">
 	</bean>
 	<bean id="helper" class="cn.com.leadfar.spring.OtherHelper"></bean>



3、在需要注入的类中,用@Resource注解进行注入:
	@Resource
	public void setMyService(UserService us){
		this.userSer = us;
	}
	
	@Resource
	public void setHelper(OtherHelper hhh){
		this.h = hhh;
	}

------------------------------------------------------------------------------
缺省情况下,@Resource注解,是按照类型【byType】进行注入!
@Resource注解,既可以放到setters方法前面,也可以直接定义到实例变量前面

----------------------------------------------------------------------------------
在Spring配置文件中增加:<context:component-scan base-package="cn.com.leadfar"/>,可以允许Spring自动扫描类路径中的类
并对定义了特殊注解的类进行管理
-------------------------------------------------------------------------------
- @Component("beanId") : 告诉Spring,这个类需要由Spring来管理
- @Scope("prototype") : 可以指定这个类的Scope属性
-----------------------------------------------------------------------------
自动扫描代码例:
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"
     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/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd">
		<context:component-scan base-package="cn.com.leadfar"/>	
		</beans>


UserAction
package cn.com.leadfar;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
@Component("userAction")
//需要spring来管理.也就是说spring 可以找到这个类.
public class UserAction {
	private UserService userSer;
	public void add(){
		System.out.println("add");
		userSer.addUser("1", "2");
	}
	@Resource
      //这个是需要注入的
       //一个set方法..
	public void setUserSer(UserService userSer) {
		this.userSer = userSer;
	}
}

总结起来就是.在xml里配置Scan后.在需要管理的类上面加@Component 然后一个方法前面加@Resource  应该可以这么理解
也可以不用set方法.把@Resource加到 Private UserService userSer;上面


UserAction
package cn.com.leadfar;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
@Component("userAction")
//需要spring来管理.也就是说spring 可以找到这个类.
public class UserAction {
         @Resource
	private UserService userSer;
	public void add(){
		System.out.println("add");
		userSer.addUser("1", "2");
	}
	//@Resource
      //这个是需要注入的
       //一个set方法..
	//public void setUserSer(UserService userSer) {
	//	this.userSer = userSer;
	//}
}


有什么不对的地方可以指出来...偶现在正在入门..不要喷..咱心平气和的说..
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    一本很不错的关于spring入门的书籍

    这本书籍“一本很不错的关于spring入门的书籍”显然是针对初学者设计的,旨在帮助新手快速掌握Spring的基本概念和核心功能。 Spring框架的核心特性包括: 1. **依赖注入(Dependency Injection,简称DI)**:这是...

    spring入门代码项目

    《Spring入门代码项目详解》 在IT行业中,Spring框架无疑是最受欢迎的Java企业级应用开发框架之一。本项目旨在帮助初学者快速入门Spring,通过实际的代码操作来理解和掌握Spring的核心概念与用法。以下是对每个子...

    spring入门经典+源代码

    spring入门经典+源代码.Spring入门经典 一书全面透彻地介绍Spring Framework;Spring Framework是Java开发领域最流行的框架,是事实上的企业级应用开发标准。本书浓墨重彩地描述实际的企业级解决方案,每一章都提供了...

    Spring入门教程.rar

    Spring框架是Java开发中...本教程的文档《Spring入门教程.doc》将深入讲解这些概念,并提供实例代码和步骤说明,帮助你从零开始学习Spring,逐步成长为一名熟练的Spring开发者。请打开文档,开始你的Spring学习之旅吧!

    《Spring入门经典》源代码

    《Spring入门经典》是一本由Mert Caliskan和Kenan Sevindik共同撰写的书籍,主要面向希望深入理解并掌握Spring框架的初学者。Spring是Java领域中最为广泛使用的开源框架,它提供了一个全面的编程和配置模型,旨在...

    spring入门经典源代码

    本资源"Spring入门经典源代码"旨在帮助初学者快速理解并掌握Spring框架的核心概念和使用方法。这本书籍结合了丰富的示例代码,使得理论与实践相结合,使学习过程更加直观和高效。 1. **Spring概述** Spring是一个...

    spring入门介绍PPT.rar

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,它以其依赖注入...这份"spring入门介绍PPT"将是你深入理解Spring的宝贵资源,通过它,你可以逐步掌握Spring的核心理念和技术,开启你的Spring开发之旅。

    Spring入门教程.pdf

    ### Spring入门教程知识点详解 #### 一、理论知识 ##### 1. 依赖注入与控制反转 - **依赖注入**(Dependency Injection, DI):在应用程序的运行期间,由外部容器(例如Spring容器)动态地将一个对象所依赖的其他...

    spring入门经典-附源代码

    《Spring入门经典》是一本专为初学者和有一定基础的开发者设计的教程,它通过附带的源代码帮助读者深入理解并快速掌握Spring框架。Spring是Java开发领域中最为广泛应用的轻量级框架,它的核心特性包括依赖注入、面向...

    spring入门相关jar包

    spring入门相关jar包,相关jar包为: commons-logging-1.2.jar spring-beans-5.2.6.RELEASE.jar spring-context-5.2.6.RELEASE.jar spring-core-5.2.6.RELEASE.jar spring-expression-5.2.6.RELEASE.jar

    spring入门经典源码第二章

    《Spring入门经典》第二章主要围绕Spring Framework的基础知识展开,旨在为初学者提供一个全面而深入的Spring学习路径。Spring Framework作为Java开发的核心框架,它以其模块化、易用性和强大的功能深受开发者喜爱,...

    Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)

    Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring...

    《Spring入门经典》书中示例代码

    《Spring入门经典》是一本深度剖析Spring框架的入门书籍,旨在帮助初学者快速掌握Spring的核心概念和使用方法。书中的示例代码是理论知识的实践体现,通过这些代码,读者可以直观地理解Spring如何工作,如何配置,...

    Spring入门级教程.pptx

    Spring入门级教程,从零开始教你认识Spring,了解Spring,理解Spring的两大核心IoC和AOP,教你如何使用Spring进行开发

    Spring入门

    Spring入门,关于Spring的详细解释以及spring的工作原理!

    Spring入门经典

    Spring入门经典 一书全面透彻地介绍Spring Framework;Spring Framework是Java开发领域最流行的框架,是事实上的企业级应用开发标准。本书浓墨重彩地描述实际的企业级解决方案,每一章都提供了通俗易懂的示例和动手...

    Spring入门书籍

    《Spring入门书籍》是一本专为初学者设计的Spring框架学习指南。这本书旨在帮助读者从零开始,逐步掌握Spring框架的基础知识和核心概念,从而在实际项目开发中得心应手。Spring作为Java企业级应用的主流框架,其强大...

    spring 入门基础

    《Spring入门基础详解》 Spring框架作为Java领域中极为重要的轻量级容器,以其强大的功能和易用性深受开发者喜爱。本教程将带你逐步走进Spring的世界,了解其核心概念,并教你如何在Eclipse环境中搭建Spring开发...

    Spring入门案例

    首先,我们来解析一下标题"Spring入门案例"。这表明我们将学习的是Spring的基本概念和基础应用,包括如何搭建Spring项目环境,配置Spring容器,以及如何使用Spring管理Bean。Spring框架的核心是IoC(Inversion of ...

Global site tag (gtag.js) - Google Analytics