- 浏览: 90880 次
文章分类
最新评论
Ioc实现对象实例化,不采用new Class的方式,这就是控制反转:由容器(spring)完成对象的实例化过程。
在使用bean之前,要在beans.xml文件中配置好各个bean的属性,并建立bean与bean之间的关系;可以使用多个类似beans.xml的配置文件。
BeanFactory使得IOC管理不同类型的对象成为可能,ApplicationContext在BeanFactory的基础上提供实用功能,一般称BeanFactory为IoC,采用java的反射和代理机制。
IoC的初始化
BeanFactory的初始化类:XmlBeanFactory该类已过时
ApplicationContext的初始化类:1.优先使用 ClassPathXmlApplicationContext (xml放在src目录下)
同时启动几个beans.xml文件:new ClassPathXmlApplicationContext(new String[]{"conf/beans1.xml","conf/beans2.xml"});
2.使用 FileSystemXmlApplicationContext (支持相对路径和绝对路径)
3.WebApplicationContext(使用较少)
获取beans.xml文件后,使用getBean(”id“)就可以返回对象实例了,在这个获取文件份过程中,IOC会实例化所用单例id对象,所以在第一次读取beans.xml文件时会花费相对多点的时间,而后访问就不会花费额外的时间了。
简单的实例:<bean id = "user" class ="org.nick.demo.User"/> 这是没有给对象属性赋值的简单实例化。
在beans.xml中id是唯一的,而使用name可以是多个,返回的实例是最后声明的那个bean,不建议使用name代替id;
可以为同一个对象配置几个name,如<bean name="name1,name2,name3" class="org.nick.demo.User"/>
如果是<bean class="org.nick.demo.User"/>这样没有指定id和name,则要使用getBean("org.nick.demo.User")全域来获取,这种属于匿名对象。
如果出现多个同类的匿名对象,使用getBean("org.nick.demo.User");getBean("org.nick.demo.User#1");getBean("org.nick.demo.User#2")来获取;
基于xml配置;
属性注入:
实例化对象过程中采用set方法和构造方法对属性进行赋值,ioc的配置方法也不一样:
setter: <propertyname="userName"value="张飞"></property>
constructor:<constructor-arg type="java.lang.String" value="张飞"></constructor-arg>
注意:参数的类型和位置,最好指明参数的位置:<constructor-arg type="java.lang.String" index="0" value="张飞"></constructor-arg>
当两个对象的构造方法中互含对方作为参数(ref=""),就会造成ioc不能启动,就必须使用set方式注入;
属性注入详解
1、字面值
如 <value>张飞</value>
<value><![CDATA[张飞2*3=89]]>引入cdata是让xml解析器将[]内的字符串当做普通的字符串,以防止不能正常解析。
2、引用其他bean
如<ref bean="user"/> 可以引用本xml文件和父xml中的bean
<ref local="user"/>只可以引用本xml文件中的bean
<ref parent="user"/>只能引用父xml中的id="user"的bean
设定父xml:
ClassPathXmlApplicationContext parentXml = new ClassPathXmlApplicationContext ("conf/beans1.xml");
ClassPathXmlApplicationContext sonXml= new ClassPathXmlApplicationContext ("conf/beans2.xml",parentXml);
将文件地址和父对象放在构造器里的;
3、List集合,对String[],int[]数组同样适用
<property name="list">
<list>
<value>刘备</value> && <ref bean=”user1“/>
<value>关羽</value> && <ref bean=”user2“/>
<value>张飞</value> && <ref bean=”user3“/>
</list>
</property>
4、Map集合
<property name="maps">
<map>
<entry>
<key><value>org1</value> </key> && <key><ref bean="name"/></key>
<value>微软</value> && <ref bean=”org“/>
</entry>
<entry>
<key><value>org2</value> </key>
<value>google</value>
</entry>
</map>
</property>
util标签
xmlns:util="http://www.springframework.org/schema/util"
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"
1、List
<util:list id="favoriteList1" list-class="java.util.LinkedList">
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</util:list>
2、Set
<util:set id="favoriteSet1" >
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</util:set>
3、Map
<util:map id="emails1" >
<entry key="AM" value="会见客户" />
<entry key="PM" value="公司内部会议" />
</util:map>
以上都可以适用<ref bean >标签
p标签
xmlns:p="http://www.springframework.org/schema/p"
如:<bean id="user" class="org.nick.demo.User" p:userName="skx" p:age="28" p:sex="male"/>
引用: p:organize_ref=”sx“
***基于注解配置,实际开发中常用,放在class的上一行
@Component 通用
@Repository 用于model
@Service 用于dao,用的较少
@Controller 用于springMVC
推荐使用特定用途的注解
使注解生效,添加context标签:
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
<context:component-scan base-package="org.nick.dao"/> 扫描包下的所有类,使得spring注解生效
1、只希望扫描特定的包:
<context:component-scan base-package="org.nick" resource-pattern="action/*.class"/ >
2、包含目标类和排除目标类,p56
<include-filter....
<exclude-filter...
&注解:自动装配
通过@Autowired注解实现bean的注入,在Bean的配置信息中匹配查找bean,仅但有一个bean匹配时,才将其注入到@Autowired标注的变量中。
这里的匹配不是按照id名匹对的,而是按照匿名类匹对的。
注:如果这个Bean配置信息中没用一个匹配的bean,Ioc容器会抛出一个NoSuchBeanDefinitionException,可以使用:
@AutoWired(required=false) 表示没有找到也不抛出异常的处理方式
注:如果IoC容器中有多个匹配的bean(有多个同类型的对象),就需要使用name名匹对:
如:@Autowired
@Qualifier("name")
自动装配不仅对变量进行标注也可对方法进行标注:
对方法进行标注 是将bean作为参数供方法使用:入参
如:@Autowired
public calculate (User skx){} //就会将User的匿名对象入参
也可使用Qualifier指定一个bean
如:@Autowired
@Qualifier("skx")
public calculate (User skx){} //就会将skx的bean入参
或者
@Autowired
public calculate (@Qualifier("skx")User skx){} //就会将skx的bean入参
注:在配置Bean配置信息时,大多时候类型是单实例的,所以一般不会使用@Repository、@Service、@Qualifier
前面讲了xml对beans的配置,也可以在一个java类中进行Bean配置:@Configuration(用的较少)
在使用bean之前,要在beans.xml文件中配置好各个bean的属性,并建立bean与bean之间的关系;可以使用多个类似beans.xml的配置文件。
BeanFactory使得IOC管理不同类型的对象成为可能,ApplicationContext在BeanFactory的基础上提供实用功能,一般称BeanFactory为IoC,采用java的反射和代理机制。
IoC的初始化
BeanFactory的初始化类:XmlBeanFactory该类已过时
ApplicationContext的初始化类:1.优先使用 ClassPathXmlApplicationContext (xml放在src目录下)
同时启动几个beans.xml文件:new ClassPathXmlApplicationContext(new String[]{"conf/beans1.xml","conf/beans2.xml"});
2.使用 FileSystemXmlApplicationContext (支持相对路径和绝对路径)
3.WebApplicationContext(使用较少)
获取beans.xml文件后,使用getBean(”id“)就可以返回对象实例了,在这个获取文件份过程中,IOC会实例化所用单例id对象,所以在第一次读取beans.xml文件时会花费相对多点的时间,而后访问就不会花费额外的时间了。
简单的实例:<bean id = "user" class ="org.nick.demo.User"/> 这是没有给对象属性赋值的简单实例化。
在beans.xml中id是唯一的,而使用name可以是多个,返回的实例是最后声明的那个bean,不建议使用name代替id;
可以为同一个对象配置几个name,如<bean name="name1,name2,name3" class="org.nick.demo.User"/>
如果是<bean class="org.nick.demo.User"/>这样没有指定id和name,则要使用getBean("org.nick.demo.User")全域来获取,这种属于匿名对象。
如果出现多个同类的匿名对象,使用getBean("org.nick.demo.User");getBean("org.nick.demo.User#1");getBean("org.nick.demo.User#2")来获取;
基于xml配置;
属性注入:
实例化对象过程中采用set方法和构造方法对属性进行赋值,ioc的配置方法也不一样:
setter: <propertyname="userName"value="张飞"></property>
constructor:<constructor-arg type="java.lang.String" value="张飞"></constructor-arg>
注意:参数的类型和位置,最好指明参数的位置:<constructor-arg type="java.lang.String" index="0" value="张飞"></constructor-arg>
当两个对象的构造方法中互含对方作为参数(ref=""),就会造成ioc不能启动,就必须使用set方式注入;
属性注入详解
1、字面值
如 <value>张飞</value>
<value><![CDATA[张飞2*3=89]]>引入cdata是让xml解析器将[]内的字符串当做普通的字符串,以防止不能正常解析。
2、引用其他bean
如<ref bean="user"/> 可以引用本xml文件和父xml中的bean
<ref local="user"/>只可以引用本xml文件中的bean
<ref parent="user"/>只能引用父xml中的id="user"的bean
设定父xml:
ClassPathXmlApplicationContext parentXml = new ClassPathXmlApplicationContext ("conf/beans1.xml");
ClassPathXmlApplicationContext sonXml= new ClassPathXmlApplicationContext ("conf/beans2.xml",parentXml);
将文件地址和父对象放在构造器里的;
3、List集合,对String[],int[]数组同样适用
<property name="list">
<list>
<value>刘备</value> && <ref bean=”user1“/>
<value>关羽</value> && <ref bean=”user2“/>
<value>张飞</value> && <ref bean=”user3“/>
</list>
</property>
4、Map集合
<property name="maps">
<map>
<entry>
<key><value>org1</value> </key> && <key><ref bean="name"/></key>
<value>微软</value> && <ref bean=”org“/>
</entry>
<entry>
<key><value>org2</value> </key>
<value>google</value>
</entry>
</map>
</property>
util标签
xmlns:util="http://www.springframework.org/schema/util"
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"
1、List
<util:list id="favoriteList1" list-class="java.util.LinkedList">
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</util:list>
2、Set
<util:set id="favoriteSet1" >
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</util:set>
3、Map
<util:map id="emails1" >
<entry key="AM" value="会见客户" />
<entry key="PM" value="公司内部会议" />
</util:map>
以上都可以适用<ref bean >标签
p标签
xmlns:p="http://www.springframework.org/schema/p"
如:<bean id="user" class="org.nick.demo.User" p:userName="skx" p:age="28" p:sex="male"/>
引用: p:organize_ref=”sx“
***基于注解配置,实际开发中常用,放在class的上一行
@Component 通用
@Repository 用于model
@Service 用于dao,用的较少
@Controller 用于springMVC
推荐使用特定用途的注解
使注解生效,添加context标签:
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
<context:component-scan base-package="org.nick.dao"/> 扫描包下的所有类,使得spring注解生效
1、只希望扫描特定的包:
<context:component-scan base-package="org.nick" resource-pattern="action/*.class"/ >
2、包含目标类和排除目标类,p56
<include-filter....
<exclude-filter...
&注解:自动装配
通过@Autowired注解实现bean的注入,在Bean的配置信息中匹配查找bean,仅但有一个bean匹配时,才将其注入到@Autowired标注的变量中。
这里的匹配不是按照id名匹对的,而是按照匿名类匹对的。
注:如果这个Bean配置信息中没用一个匹配的bean,Ioc容器会抛出一个NoSuchBeanDefinitionException,可以使用:
@AutoWired(required=false) 表示没有找到也不抛出异常的处理方式
注:如果IoC容器中有多个匹配的bean(有多个同类型的对象),就需要使用name名匹对:
如:@Autowired
@Qualifier("name")
自动装配不仅对变量进行标注也可对方法进行标注:
对方法进行标注 是将bean作为参数供方法使用:入参
如:@Autowired
public calculate (User skx){} //就会将User的匿名对象入参
也可使用Qualifier指定一个bean
如:@Autowired
@Qualifier("skx")
public calculate (User skx){} //就会将skx的bean入参
或者
@Autowired
public calculate (@Qualifier("skx")User skx){} //就会将skx的bean入参
注:在配置Bean配置信息时,大多时候类型是单实例的,所以一般不会使用@Repository、@Service、@Qualifier
前面讲了xml对beans的配置,也可以在一个java类中进行Bean配置:@Configuration(用的较少)
发表评论
-
41、解决HttpServletResponse输出的中文乱码问题
2015-04-12 21:48 1213response返回有两种,一种是字节流outputs ... -
41、轮询
2015-04-12 08:50 0浏览器关闭使session失效 ... -
40、spring ajax/easyui 中文乱码的解决
2015-04-04 14:52 692使用spingmvc,在JS里面通过ajax发送请求,并 ... -
39、.net
2015-03-28 23:12 542熟悉java编程,自然学习c#就会比较容易,有几个点需要说明下 ... -
38、servlet-- JSTL+EL(c标签、${})
2015-03-23 15:57 780参看:http://www.cnblogs.com/xdp-g ... -
37、servlet--jsp
2015-03-23 15:07 492不管是JSP还是Servlet,虽然都可以用于开发动 ... -
36、servlet--防止表单重复提交
2015-03-23 14:33 7081、在网络延迟会或服务器反应过慢的情况下让用户有时间点击多次s ... -
35、servlet--servletContext
2015-03-22 13:41 474servletContext接口是Servlet中最大的一个接 ... -
34、servlet--会话技术/购物车demo/y验证码
2015-03-21 23:40 586会话Session and Cookie 1、session: ... -
33、servlet--转发/web开发指导思想
2015-03-21 12:31 444转发: req.getRequestDispatcher(&q ... -
32、servlet --重定向/下载/缓存/中文乱码
2015-03-20 23:21 1052重定向1、sendRedirect rep.sendRedir ... -
31、servlet--开发方式
2015-03-20 21:55 633servlet:利用java技术开发动态网页的技术,是学习ja ... -
30、servlet---tomcat原理
2015-03-20 18:20 674Servlet出现得早,servlet很强大,但是se ... -
29、servlet--jsp执行过程
2015-03-20 15:08 445J2EE的13种核心技术:JDBC、JNDI、EJBs、 ... -
29、springmvc+spring+mybatis+oracle12的demo
2015-03-15 20:29 0每次搭建都要重头搭建,累~~ 注意:用12c的jdbc 在安 ... -
27、Tomcat多次加载项目问题
2015-03-12 15:30 558错误配置方式: <Host name="lo ... -
26、数据分页(jsp+servlet)
2015-03-12 15:19 470随着数据库中存储的数据的增多,满足用户查询条件的数据也 ... -
llll.文档设计
2015-03-11 13:31 0设计文档与代码实现到 ... -
24、webservice_短信接口
2015-03-11 10:48 797http://blog.csdn.net/sxdtzhaoxi ... -
25、RMI_demo1
2015-03-11 10:48 425Java RMI 指的是远程方法调用 (Remote Meth ...
相关推荐
Spring IOC,全称为Inversion of Control,中文常被称为“控制反转”,是Spring框架的核心特性之一。这个概念在软件设计中引入了一种新的依赖管理方式,它将对象的创建和管理权交给了容器,使得开发者可以更专注于...
Spring框架是Java开发中的一个核心组件,它提供了许多功能,其中最重要的一项就是Inversion of Control(IoC),也称为Dependency Injection(DI)。IoC容器是Spring的核心,它负责管理对象的生命周期和对象间的依赖...
标题“Spring-MVC+Spring-IOC+Spring-JdbcTemple”揭示了这个项目或教程是关于如何集成并使用Spring框架的三个核心模块:Spring MVC、Spring IOC(Inversion of Control,控制反转)以及Spring JDBC Template。...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器处理,使得开发者可以更专注于业务逻辑的编写,而不是对象的生命周期管理。下面,我们将深入探讨Spring...
Spring框架是Java开发中不可或缺的一部分,尤其在企业级应用中,其Inversion of Control(IoC)容器是其核心特性之一。IoC,也被称为依赖注入(Dependency Injection,DI),是一种设计模式,它将对象的创建和管理权...
Spring框架的核心特性之一是IoC(Inversion of Control,控制反转),它改变了传统编程中的对象创建和管理方式。在传统的面向对象编程中,一个类会负责创建并管理其依赖的对象。而在Spring框架中,这种职责由Spring...
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC)特性而闻名。在这个名为"Spring-IOC丐版"的项目中,我们将深入探讨...
Spring框架是Java企业级应用开发中的核心组件,它的全称是Spring Inversion of Control(控制反转)或Dependency Injection(依赖注入)。这是一个轻量级的框架,它通过简化Java应用的开发和管理,使开发者可以更加...
Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)为核心,极大地简化了软件组件的管理。在这个名为“Spring---IOC实现”的项目中,我们将深入探讨Spring如何通过IoC实现对应用...
Spring 框架是 Java 开发中不可或缺的一部分,其核心特性之一就是依赖注入(Dependency Injection,简称 DI),也称为控制反转(Inversion of Control,简称 IoC)。IoC 是一种设计模式,它允许我们通过外部配置来...
在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇,其中的核心概念就是IOC(Inversion of Control,控制反转)。本文将深入探讨Spring IOC,以及它如何通过容器来管理和配置应用对象,实现松耦合。 **...
Spring框架是Java开发中的一个重要组件,它以IoC(Inversion of Control,控制反转)为核心理念,极大地简化了软件设计和开发。IoC是面向对象编程中的一种设计原则,它的出现使得开发者不再需要手动管理对象的创建和...
Spring 框架是 Java 开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection, DI)和控制反转(Inversion of Control, IOC)特性而闻名。在这个名为“spring-demo02-IOC-DI案例”的压缩包中,我们将...
在Java Spring框架中,Spring IoC(Inversion of Control,控制反转)是核心特性之一,它使得应用程序的组件之间的依赖关系不再由代码直接管理,而是交由Spring IoC容器负责。这种设计模式降低了代码间的耦合,提高...
其中,Spring的核心组件之一就是IOC(Inversion of Control,控制反转)容器,它实现了依赖注入(Dependency Injection,DI),使得组件之间的耦合度大大降低,提高了代码的可维护性和可测试性。本文将围绕“coco-...
标题中的"spring-01-ioc1.rar"表明这是一个关于Spring框架中控制反转(Inversion of Control,简称IoC)的初级教程资源。Spring是Java领域广泛应用的一个轻量级开源框架,它的核心特性就是IoC,它使得应用程序的组件...
Spring IoC(Inversion of Control,控制反转)是Spring框架的核心特性,它为应用程序的组件提供了管理和协调。本文将深入探讨Spring IoC容器的工作原理、优势以及如何在实际开发中应用。 Spring IoC容器,也被称为...
1. **spring-core**: 提供了基础的IoC(Inversion of Control)容器,它是Spring框架的核心。IoC允许开发者通过配置来管理对象的生命周期和依赖关系,使得代码更加松耦合。 2. **spring-beans**: 支持Bean工厂和XML...
在Spring 1.0版本中,核心概念主要围绕IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)展开。IoC使得对象的创建和管理由Spring容器负责,而不是由代码直接创建,这样降低...
Spring的核心设计理念是依赖注入(Dependency Injection,简称DI),它通过反转控制(Inversion of Control,IoC)来降低组件之间的耦合度。这种设计模式使得应用程序的配置和业务逻辑分离,从而提高了代码的可测试...