Spring中依赖注入的使用和配置
2014-11-04 23:05
519 查看
使用方法1:
使用方法2:
public class SocketRequest {
/**
* 默认实例
*/
private static final SocketRequest INSTANCE = new SocketRequest();
/**
* 获取默认实例
*
* @return 默认实例
*/
public static SocketRequest get() {
return INSTANCE;
}
/**
* 处理系统控制器操作方法
*
* @param context
* spring上下文
*/
public void methodHolder(ApplicationContext context) {
String[] beans = context.getBeanDefinitionNames();//通过此方法可以获得所有的注入类
} }
[b]Spring配置[/b]
1.属性中引用另外的bean
2.有构造函数的注入
3.有属性的注入,直接把属性写入,很少用到
4.scope范围,默认是singleton即单例,如果是prototype则每次是新实例
5.可以注入集合类型
6.自动装配
7.初始化bean时执行init-method方法和销毁的时候执行destroy-method方法
8.使用注解
9.扫描包名,包名下的类都可以注入。
10.实际项目配置参考
//在执行此实例化的时候就会完成所有注入 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); UserService service = (UserService)ctx.getBean("userService");
使用方法2:
public class SocketRequest {
/**
* 默认实例
*/
private static final SocketRequest INSTANCE = new SocketRequest();
/**
* 获取默认实例
*
* @return 默认实例
*/
public static SocketRequest get() {
return INSTANCE;
}
/**
* 处理系统控制器操作方法
*
* @param context
* spring上下文
*/
public void methodHolder(ApplicationContext context) {
String[] beans = context.getBeanDefinitionNames();//通过此方法可以获得所有的注入类
} }
public class GameServer implements ApplicationContextAware{ @Override public void setApplicationContext(ApplicationContext arg0) throws BeansException { SocketRequest.get().methodHolder(arg0); } }
public class mainServer { public static void main(String[] args) { //在执行此实例化的时候就会完成所有注入,同时会调用GameServer的setApplicationContext方法
GameServer server = new ClassPathXmlApplicationContext("server.xml").getBean(GameServer.class);
} }
[b]Spring配置[/b]
1.属性中引用另外的bean
<?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"> <!-- IoC控制反转 --> <bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl"> </bean> <!-- 属性中引用另外的bean--> <bean id="userService" class="com.bjsxt.service.UserService"> <property name="userDAO" ref="u" /> </bean> </beans>
2.有构造函数的注入
<?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"> <!-- IoC控制反转 --> <bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl"> </bean> <bean id="userService" class="com.bjsxt.service.UserService"> <!-- 有构造函数的注入 --> <constructor-arg> <ref bean="u" /> </constructor-arg> </bean> </beans>
3.有属性的注入,直接把属性写入,很少用到
<?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"> <!-- IoC控制反转 --> <bean name="u" class="com.bjsxt.dao.impl.UserDAOImpl"> <!-- 有属性的注入,直接把属性写入,很少用到 --> <property name="daoId" value="123"></property> <property name="daoStatus" value="DDD"></property> </bean> <!-- 可以写id也可以写name(如果是name则可以写特殊字符) --> <bean id="userService" class="com.bjsxt.service.UserService"> <constructor-arg> <ref bean="u" /> </constructor-arg> </bean> </beans>
4.scope范围,默认是singleton即单例,如果是prototype则每次是新实例
<?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"> <!-- IoC控制反转 --> <bean name="u" class="com.bjsxt.dao.impl.UserDAOImpl"> <property name="daoId" value="123"></property> <property name="daoStatus" value="DDD"></property> </bean> <!-- scope范围,默认是singleton即单例,如果是prototype则每次是新实例 --> <bean id="userService" class="com.bjsxt.service.UserService" scope="prototype"> <constructor-arg> <ref bean="u" /> </constructor-arg> </bean> </beans>
5.可以注入集合类型
<?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"> <!-- IoC控制反转 --> <bean name="u" class="com.bjsxt.dao.impl.UserDAOImpl"> <!-- 可以注入集合类型 --> <property name="sets"> <set> <value>1</value> <value>2</value> </set> </property> <property name="lists"> <list> <value>1</value> <value>2</value> <value>3</value> </list> </property> <property name="maps"> <map> <entry key="1" value="1"></entry> <entry key="2" value="2"></entry> <entry key="3" value="3"></entry> <entry key="4" value="4"></entry> </map> </property> </bean> <bean id="userService" class="com.bjsxt.service.UserService" scope="prototype"> <constructor-arg> <ref bean="u" /> </constructor-arg> </bean> </beans>
6.自动装配
<?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"> <!-- IoC控制反转 --> <bean name="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl"> <property name="name" value="myname"></property> </bean> <!-- 自动装配(用的不多): byName按名称自动匹配(即要装配的bean中的属性名称和配置中的bean名称相同就会自动装配,如UserService类中的属性和userDAO的bean名称相同就自动装配) byType按类型自动匹配 (即要装配的bean中的属性类型和配置中的bean的类型相同就会自动装配,如UserService类中的属性类型和userDAO的bean类型相同就自动装配) --> <bean id="userService" class="com.bjsxt.service.UserService" autowire="default"> </bean> </beans>
7.初始化bean时执行init-method方法和销毁的时候执行destroy-method方法
<?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" default-autowire="byName" > <!-- IoC控制反转 --> <bean name="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl"> <property name="name" value="myname"></property> </bean> <!-- 初始化bean时执行init-method方法和销毁的时候执行destroy-method方法 --> <bean id="userService" class="com.bjsxt.service.UserService" init-method="init" destroy-method="destroy"> </bean> </beans>
8.使用注解
<?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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config></context:annotation-config> </beans>
9.扫描包名,包名下的类都可以注入。
<?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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="com.bjsxt"></context:component-scan> </beans>
10.实际项目配置参考
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.eelpo.com/schema/jdbc" xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.eelpo.com/schema/jdbc http://www.eelpo.com/schema/jdbc/jdbc.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath:system.properties" /> <context:component-scan base-package="com.egaplay.foi.controller" /> <context:component-scan base-package="com.egaplay.foi.core.listener" /> <context:component-scan base-package="com.egaplay.foi.tools.controller" /> <context:component-scan base-package="com.egaplay.foi.module.*.service" /> <context:component-scan base-package="com.egaplay.foi.module" resource-pattern="Context.class" /> <jdbc:repositories base-package="com.egaplay.foi.module.*.dao"></jdbc:repositories> <bean class="com.eelpo.framework.socket.server.GameServer"> <property name="port" value="${port}" /> <property name="shutdownPort" value="${shutdownPort}" /> <property name="crossDomainPort" value="${crossDomainPort}" /> <property name="startCrossDomainServer" value="${startCrossDomainServer}" /> <property name="shutdownCommand" value="${shutdownCommand}" /> <property name="executionHandler" ref="executionHandler" /> <property name="socketIdleStateHandler" ref="socketIdleStateHandler" /> <property name="gameServerListener" ref="foiServerListener" /> <property name="socketIdleListener" ref="foiSocketIdleListener" /> <property name="socketSessionListener" ref="foiSocketSessionListener" /> <property name="socketContextListener" ref="foiSocketContextListener" /> <property name="socketRequestListener" ref="foiSocketRequestListener" /> </bean> <bean id="executionHandler" class="org.jboss.netty.handler.execution.ExecutionHandler"> <constructor-arg index="0"> <bean class="org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor"> <constructor-arg index="0" value="${threadPool.corePoolSize}" type="int" /> <constructor-arg index="1" value="${threadPool.maxChannelMemorySize}" type="long" /> <constructor-arg index="2" value="${threadPool.maxTotalMemorySize}" type="long" /> <constructor-arg index="3" value="${threadPool.keepAliveTime}" type="long" /> <constructor-arg index="4" value="SECONDS" type="java.util.concurrent.TimeUnit" /> <constructor-arg index="5"> <bean class="com.eelpo.framework.utils.concurrent.NamedThreadFactory"> <constructor-arg index="0" value="Business Process #" /> </bean> </constructor-arg> </bean> </constructor-arg> </bean> <bean id="socketIdleStateHandler" class="com.eelpo.framework.socket.server.handler.SocketIdleStateHandler"> <constructor-arg index="0" ref="foiSocketIdleListener" /> <constructor-arg index="1"> <bean class="org.jboss.netty.util.HashedWheelTimer"> <constructor-arg index="0" value="${wheelTimer.tickDuration}" type="long" /> <constructor-arg index="1" value="SECONDS" type="java.util.concurrent.TimeUnit" /> <constructor-arg index="2" value="${wheelTimer.ticksPerWheel}" type="int" /> </bean> </constructor-arg> <constructor-arg index="2" value="${socketIdle.readerIdleTimeSeconds}" type="int" /> <constructor-arg index="3" value="${socketIdle.writerIdleTimeSeconds}" type="int" /> <constructor-arg index="4" value="${socketIdle.allIdleTimeSeconds}" type="int" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="url" value="${jdbc.url}" /> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="connectionProperties" value="${jdbc.connectionProperties}" /> <property name="defaultAutoCommit" value="${dbcp.defaultAutoCommit}" /> <property name="defaultCatalog" value="${dbcp.defaultCatalog}" /> <property name="initialSize" value="${dbcp.initialSize}" /> <property name="maxActive" value="${dbcp.maxActive}" /> <property name="maxIdle" value="${dbcp.maxIdle}" /> <property name="minIdle" value="${dbcp.minIdle}" /> <property name="maxWait" value="${dbcp.maxWait}" /> <property name="timeBetweenEvictionRunsMillis" value="${dbcp.timeBetweenEvictionRunsMillis}" /> <property name="numTestsPerEvictionRun" value="${dbcp.numTestsPerEvictionRun}" /> <property name="minEvictableIdleTimeMillis" value="${dbcp.minEvictableIdleTimeMillis}" /> <property name="poolPreparedStatements" value="${dbcp.poolPreparedStatements}" /> <property name="maxOpenPreparedStatements" value="${dbcp.maxOpenPreparedStatements}" /> <property name="accessToUnderlyingConnectionAllowed" value="${dbcp.accessToUnderlyingConnectionAllowed}" /> <property name="removeAbandoned" value="${dbcp.removeAbandoned}" /> <property name="removeAbandonedTimeout" value="${dbcp.removeAbandonedTimeout}" /> <property name="logAbandoned" value="${dbcp.logAbandoned}" /> </bean> </beans>
相关文章推荐
- Spring使用注解配置依赖注入
- 使用dom4j:读取spring配置文件,实例化bean对象并注入依赖对象
- Spring_使用XML配置文件实现依赖注入
- Spring依赖注入:在spring配置文件中使用properties配置文件
- spring 框架中的依赖注入(IOC--设值注入)---使用xml简单配置文件---的具体实例的简单实现
- Spring.net 控制反转(IOC)依赖注入(DI)的使用 以及Config文件的配置
- Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea
- 使用dom4j:读取spring配置文件,实例化bean对象并注入依赖对象
- Spring.net依赖注入及环境配置
- Spring零配置通过注解实现Bean依赖注入总结<转>
- Spring配置依赖注入的三种方式
- 11级_Java_曹建波 04.24 Spring的配置、生命周期、依赖注入bean的操作
- Spring依赖注入的简单示例(基于XML文件配置)
- 使用Spring.Net对Web页面进行依赖注入
- Spring依赖注入 — 集合属性配置
- 零配置 之 12.2 注解实现Bean依赖注入 ——跟我学spring3
- 【第十二章】零配置 之 12.1 概述 12.2 注解实现Bean依赖注入 ——跟我学spring3
- spring 错误(org.springframework.beans.NotWritablePropertyException)依赖注入配置
- spring 依赖注入配置详解
- spring List,Set,Map,Properties,array的使用配置文件注入实例