有一些摘自 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框架的核心特性包括: 1. **依赖注入(Dependency Injection,简称DI)**:这是...
《Spring入门代码项目详解》 在IT行业中,Spring框架无疑是最受欢迎的Java企业级应用开发框架之一。本项目旨在帮助初学者快速入门Spring,通过实际的代码操作来理解和掌握Spring的核心概念与用法。以下是对每个子...
spring入门经典+源代码.Spring入门经典 一书全面透彻地介绍Spring Framework;Spring Framework是Java开发领域最流行的框架,是事实上的企业级应用开发标准。本书浓墨重彩地描述实际的企业级解决方案,每一章都提供了...
Spring框架是Java开发中...本教程的文档《Spring入门教程.doc》将深入讲解这些概念,并提供实例代码和步骤说明,帮助你从零开始学习Spring,逐步成长为一名熟练的Spring开发者。请打开文档,开始你的Spring学习之旅吧!
《Spring入门经典》是一本由Mert Caliskan和Kenan Sevindik共同撰写的书籍,主要面向希望深入理解并掌握Spring框架的初学者。Spring是Java领域中最为广泛使用的开源框架,它提供了一个全面的编程和配置模型,旨在...
本资源"Spring入门经典源代码"旨在帮助初学者快速理解并掌握Spring框架的核心概念和使用方法。这本书籍结合了丰富的示例代码,使得理论与实践相结合,使学习过程更加直观和高效。 1. **Spring概述** Spring是一个...
Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,它以其依赖注入...这份"spring入门介绍PPT"将是你深入理解Spring的宝贵资源,通过它,你可以逐步掌握Spring的核心理念和技术,开启你的Spring开发之旅。
### Spring入门教程知识点详解 #### 一、理论知识 ##### 1. 依赖注入与控制反转 - **依赖注入**(Dependency Injection, DI):在应用程序的运行期间,由外部容器(例如Spring容器)动态地将一个对象所依赖的其他...
《Spring入门经典》是一本专为初学者和有一定基础的开发者设计的教程,它通过附带的源代码帮助读者深入理解并快速掌握Spring框架。Spring是Java开发领域中最为广泛应用的轻量级框架,它的核心特性包括依赖注入、面向...
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 Framework的基础知识展开,旨在为初学者提供一个全面而深入的Spring学习路径。Spring Framework作为Java开发的核心框架,它以其模块化、易用性和强大的功能深受开发者喜爱,...
Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring...
《Spring入门经典》是一本深度剖析Spring框架的入门书籍,旨在帮助初学者快速掌握Spring的核心概念和使用方法。书中的示例代码是理论知识的实践体现,通过这些代码,读者可以直观地理解Spring如何工作,如何配置,...
Spring入门级教程,从零开始教你认识Spring,了解Spring,理解Spring的两大核心IoC和AOP,教你如何使用Spring进行开发
Spring入门,关于Spring的详细解释以及spring的工作原理!
Spring入门经典 一书全面透彻地介绍Spring Framework;Spring Framework是Java开发领域最流行的框架,是事实上的企业级应用开发标准。本书浓墨重彩地描述实际的企业级解决方案,每一章都提供了通俗易懂的示例和动手...
《Spring入门书籍》是一本专为初学者设计的Spring框架学习指南。这本书旨在帮助读者从零开始,逐步掌握Spring框架的基础知识和核心概念,从而在实际项目开发中得心应手。Spring作为Java企业级应用的主流框架,其强大...
《Spring入门基础详解》 Spring框架作为Java领域中极为重要的轻量级容器,以其强大的功能和易用性深受开发者喜爱。本教程将带你逐步走进Spring的世界,了解其核心概念,并教你如何在Eclipse环境中搭建Spring开发...
首先,我们来解析一下标题"Spring入门案例"。这表明我们将学习的是Spring的基本概念和基础应用,包括如何搭建Spring项目环境,配置Spring容器,以及如何使用Spring管理Bean。Spring框架的核心是IoC(Inversion of ...