Spring-IOC
来源:互联网 发布:源码购买平台 编辑:程序博客网 时间:2024/06/02 07:29
1. 注入方式
配置文件配置属性的方式是一种配置方式,
<bean id="myServer" class="top.microfrank.MyServer"> <property name="serverSocket" ref="serverSocket"/> <property name="path" value="d://"/></bean>
还有一种是通过构造函数进行注入:
<bean id="serverSocket" class="java.net.ServerSocket"> <constructor-arg index="0" type="int"value="8084"/></bean>
上面这个例子就通过构造函数,只有一个int参数的构造函数且这个int参数的序号是第零个。Index代表序号,type代表该参数类型,在没有歧义的情况下,可以只写index或type。
这便是通过构造函数注入。
2. Bean获取方式
通过ApplicationContext
来获取Spring上下文环境,可以通过这个上下文的getBean
方法来获取bean。其实bean还有其他几种生成方式。与ApplicationContext
形成对比的就是BeanFactory
,但是他是面向Spring内部的,而ApplicationContext
则面向开发人员,因而后者用的多,前者一般不会使用。另外如果是web应用中我们就不能用ApplicationContext
了,因为web应用我们写的是action,即对每次请求的处理,这个上下文显然在任何一次请求中初始化都是不合适的,应该是伴随web应用启动。所以需要另一个接口WebApplicationContext
。
ApplicationContext
的产生方式有ClassPathXMLApplicationContext
和FileSystemXmlApplicationContext
两种,分别是类路径和系统文件路径获取配置文件。
WebApplicationContext
产生方式也有两种,一种是通过web容器的监听器Listener
启动,另一种是通过自启动的sevlet
来启动。两者都是在web.xml中进行配置:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springconf.xml</param-value></context-param><listener><listener-class> org.springframework.web.context.ContextLoaderListener </listener-class></listener>
这是监听器的方式配置伴随web容器启动的spring。我一般用的是这种,另一种通过自启动的servlet来启动的方式这里就不写了,感兴趣可以自己查一下。
然后在servlet中通过servlet上下文context来获取这个WebApplicationContext
:
WebApplicationContextweb context =(WebApplicationContext)context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
3. 注入参数
之前通过property标签将参数进行注入,可以设置的是name和value或ref属性,value是值类型(基本数据类型和String),ref则是引用类型。
如果是null值则用<null/>
标签标示。
如果是List类型则用<list><value>v1</value><ref>r2</ref></list>
数组类型也用这个
如果是Set类型则和list标签类似的set标签
如果是Map类型则<map><entry><key>k1</key><value>v1</value></entry></map>
通过p命名空间的引入,可以简化参数的注入:
xmlns:p="http://www.springframework.org/schema/p" …<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close" p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://localhost/smart" p:user="root" p:password=""/>
4. Bean的继承和依赖
Bean继承不是类的继承,只是有多个bean的类型参数值都一样可以通过继承的方式,完全继承父bean的参数的值,然后可以改动不一样的参数的值,少写一些字而已。通过parent
属性指定父bean的id即可。
Bean依赖是为了在生成这个bean的时候用到了另一个bean,需要指定另一个bean需要先被创建。通过depends-on
属性指定依赖的bean的id即可。
5. 多配置文件整合
一个项目中往往不止一个配置文件,因为开发过程可能是分工完成的。每个模块可能都有一个配置文件,整合多个配置文件是一定会遇到的情况。整合方法一般有两种,一种是通过import
标签直接将另一个配置文件引入,import
的resource
属性指定路径,例如resource=”classpath:springconf2.xml”
。这种方式用的比较多,常见的模式是各个模块都有一个配置文件,最后总的配置文件引入所有。另一种方式则是不进行引入,直接在ClassPathApplicationContext
类的构造函数中传入多个文件参数即可。
另一种情况,如果想将部分属性单独拿出去,如数据库账户密码,因为直接在整个配置文件中可能很难找,配置起来不舒服。则可以在配置文件中
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:db.properties"/> <property name="fileEncoding" value="utf-8"/> </bean>
即可将properties文件引入,这个文件内容是:
userName=rootpassword=123456
然后在xml文件中可以通过${userName}引用属性值
6. 其他配置方式
前面的都基于通过xml配置,xml是最全,所有功能都能实现的配置方式。也是必须得会的方式。其他方式只不过提供了简便写法。之前讲过注解配置的最简单的写法,注解是通过Component声明一个类为bean(与之等效的还有Service Repository和Controller)。然后Autowired按类型匹配注入,Qualifier 按名字匹配注入,Resource 则是更加灵活的注入写法。
以上两种用的最多,适用范围广。还有基于java类的配置,即在一个类上加上Configuration注解,然后在方法上加Bean注解表示这个方法返回的对象添加为一个Bean,这种配置方式,可以用java语言设置bean内字段的属性,比较贴近开发者。同样这个也需要context命名空间,和指定扫描的包。基于Groovy DSL的配置是第四种方式,这个是spring4才有的,他本质上和基于java类配置一样,只不过用Groovy写的,更简练。Xml之外的三种都比较简练,但是也缺少一些灵活性,不那么全能,而且是侵入式的。总之配置方式千变万化,我们只需要学好xml,其他的都是万变不离其宗。
- IOC、Spring的IOC
- Spring IoC
- [Spring]IoC
- Spring IOC
- Spring IOC
- spring IOC
- Spring IOC
- Spring IOC
- Spring Ioc
- Spring IoC
- spring ioc
- Spring IOC
- spring IOC
- Spring Ioc
- Spring IoC
- Spring IOC
- Spring IOC
- Spring IoC
- CSS基础学习
- mysql导入数据库出错
- win10 theano gpu
- Java生成验证码
- 初始化快
- Spring-IOC
- new String(“123”)创建了多少个对象?
- 折半查找
- 这是一篇测试博客
- 计算机网络.五层协议栈模型简介
- JSP基础——JSP的3个编译指令
- POJ 1198 Solitaire 笔记
- POJ 1141 Brackets Sequence——区间dp
- php 分批获取数据