使用方法1:

  //在执行此实例化的时候就会完成所有注入  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);

} }

Spring配置

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中依赖注入的使用和配置的更多相关文章

  1. Spring中依赖注入的四种方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...

  2. spring中依赖注入与aop讲解

    一.依赖注入 这个属于IOC依赖注入,也叫控制反转,IOC是说类的实例由容器产生,而不是我们用new的方式创建实例,控制端发生了改变所以叫控制反转. 1 2 3 4 5 6 7 8 9 10 11 1 ...

  3. Spring点滴七:Spring中依赖注入(Dependency Injection:DI)

    Spring机制中主要有两种依赖注入:Constructor-based Dependency Injection(基于构造方法依赖注入) 和 Setter-based Dependency Inje ...

  4. Spring IOC 依赖注入的两种方式XML和注解

    依赖注入的原理 依赖注入的方式---XML配置 依赖注入的方式---注解的方式 Spring 它的核心就是IOC和AOP.而IOC中实现Bean注入的实现方式之一就是DI(依赖注入). 一 DI的原理 ...

  5. (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)

    Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring ...

  6. Spring的依赖注入(DI)三种方式

    Spring依赖注入(DI)的三种方式,分别为: 1.  接口注入 2.  Setter方法注入 3.  构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...

  7. 一步一步深入spring(3)--spring的依赖注入方式

    对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,sprin ...

  8. spring的依赖注入是什么意思

    最近学习spring框架,对依赖注入有些模糊,遂上网翻阅资料,做了下列总结,原博客为CSDN 南夏的 spring的依赖注入是什么意思,侵删! Spring 能有效地组织J2EE应用各层的对象.不管是 ...

  9. SpringBoot系列: 理解 Spring 的依赖注入(一)

    ==============================Spring 的依赖注入==============================对于 Spring 程序, Spring 框架为我们提供 ...

随机推荐

  1. CSS背景 顶上 顶下之类详解

    background: url(../images/img17.jpg)no-repeat 0px opx ; 背景的第一个属性石左右值,第二个数字是上下值 举个案例,比如图片只有1400宽300高, ...

  2. 2016 ICPC China-Final 现场赛总结

    距离比赛结束快有一个礼拜了才抽出时间来写这篇总结.今年比赛打了也有5场了(4场区域赛+1场省赛),也取得了不错的成绩(区域赛两银),总的来说第一年就取得这成绩还是挺高兴的.我们队,我自己都渐渐的趋于成 ...

  3. HBase with MapReduce (Only Read)

    最近在学习HBase,在看到了如何使用Mapreduce来操作Hbase,下面将几种情况介绍一下,具体的都可以参照官网上的文档说明.官网文档连接:http://hbase.apache.org/boo ...

  4. Hadoop_YARN框架

    Hadoop学习笔记总结 01. YARN框架 1. 新一代的框架介绍 YARN的职能就是将资源调度和任务调度分开.资源管理器ResourceManager全局管理所有应用程序计算资源的分配,每一个j ...

  5. nginx: [error] invalid PID number &quot;&quot; in &quot;/usr/local/nginx/logs/nginx.pid&quot;

    iwangzheng.com tty:[0] jobs:[0] cwd:[/opt/nginx/conf] 12:45 [root@a02.cmsapi]$ /usr/local/nginx/sbin ...

  6. 基于jQuery编写的横向自适应幻灯片切换特效

    基于jQuery编写的横向自适应幻灯片切换特效 全屏自适应jquery焦点图切换特效,在IE6这个蛋疼的浏览器兼容性问题上得到了和谐,兼容IE6. 适用浏览器:IE6.IE7.IE8.360.Fire ...

  7. 对student进行增删改

    drop package TechEd_pkg_Student; CREATE OR REPLACE PACKAGE TechEd_pkg_Student AS FUNCTION F_CREATE(p ...

  8. Vue开源项目库汇总

    最近做了一个Vue开源项目库汇总,里面集合了OpenDigg 上的优质的Vue开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. UI组件 elem ...

  9. 201521123066《Java程序设计》第八周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结** 用cont ...

  10. iOS APP内购

    看到网上文章一大把,看了这个觉得挺不错的,谢谢 iOS大全 公众平台; 原文:http://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=2652 ...