Spring注入

Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为。

常用的两种注入方式:

  • setter注入
  • 构造注入
<?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.xsd" >
<!-- setter注入 -->
<bean id="setterService" class="com.injavawetrust.ioc.injection.service.SetterServiceImpl">
<property name="setterDao" ref="setterDao"></property>
</bean>
<!-- 构造注入 -->
<bean id="constructorService" class="com.injavawetrust.ioc.injection.service.ConstructorServiceImpl">
<constructor-arg name="constructorDao" ref="constructorDao"></constructor-arg>
</bean> <bean id="setterDao" class="com.injavawetrust.ioc.injection.dao.SetterDaoImpl"></bean>
<bean id="constructorDao" class="com.injavawetrust.ioc.injection.dao.ConstructorDaoImpl"></bean> </beans>
import junit.framework.TestCase;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.springframework.beans.BeansException;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.injavawetrust.ioc.injection.service.ConstructorService;
import com.injavawetrust.ioc.injection.service.SetterService;
/**
* @author InJavaWeTrust
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class TestInjection extends TestCase { private ClassPathXmlApplicationContext context;
@Before
public void before() {
try {
context = new ClassPathXmlApplicationContext("classpath:spring-injavawetrust.xml");
context.start();
} catch (BeansException e) {
e.printStackTrace();
}
} @After
public void after() {
context.destroy();
} @Test
public void tesSetter() {
SetterService service = (SetterService) context.getBean("setterService");
service.say("setter-injavawetrust");
} @Test
public void testConstructor() {
ConstructorService service = (ConstructorService) context.getBean("constructorService");
service.say("constructor-injavawetrust");
} }
/**
* @author InJavaWeTrust
*/
public interface SetterService {
public void say(String str);
}
import com.injavawetrust.ioc.injection.dao.SetterDao;
/**
* @author InJavaWeTrust
*/
public class SetterServiceImpl implements SetterService { private SetterDao setterDao; public void setSetterDao(SetterDao setterDao) {
this.setterDao = setterDao;
} @Override
public void say(String str) {
System.out.println("接受参数:" + str);
str = "hello " + str;
setterDao.say(str);
}
}
/**
* @author InJavaWeTrust
*/
public interface SetterDao {
public void say(String str);
}
/**
* @author InJavaWeTrust
*/
public class SetterDaoImpl implements SetterDao { @Override
public void say(String str) {
System.out.println("say: " + str);
}
}
/**
* @author InJavaWeTrust
*/
public interface ConstructorService {
public void say(String str);
}
import com.injavawetrust.ioc.injection.dao.ConstructorDao;
/**
* @author InJavaWeTrust
*/
public class ConstructorServiceImpl implements ConstructorService { private ConstructorDao constructorDao; public ConstructorServiceImpl(ConstructorDao constructorDao) {
this.constructorDao = constructorDao;
} @Override
public void say(String str) {
System.out.println("接受参数:" + str);
str = "hello " + str;
constructorDao.say(str);
}
}
/**
* @author InJavaWeTrust
*/
public interface ConstructorDao {
public void say(String str);
}
/**
* @author InJavaWeTrust
*/
public class ConstructorDaoImpl implements ConstructorDao { @Override
public void say(String str) {
System.out.println(str);
}
}

Spring注入的更多相关文章

  1. Spring注入JPA+JPA事务管理

    本例实现的是Spring注入JPA 和 使用JPA事务管理.JPA是sun公司开发的一项新的规范标准.在本质上来说,JPA可以看作是Hibernate的一个子集:然而从功能上来说,Hibernate是 ...

  2. Spring注入中byType和byName的总结

    1.首先,区分清楚什么是byType,什么是byName. <bean id="userServiceImpl" class="cn.com.bochy.servi ...

  3. spring注入参数详解

    spring注入参数详解 在Spring配置文件中, 用户不但可以将String, int等字面值注入到Bean中, 还可以将集合, Map等类型的数据注入到Bean中, 此外还可以注入配置文件中定义 ...

  4. 线程中无法实例化spring注入的服务的解决办法

    问题描述 在Java Web应用中采用多线程处理数据,发现Spring注入的服务一直报NullPointerException.使用注解式的声明@Resource和XML配置的bean声明,都报空指针 ...

  5. FlushMode属性与transaction(spring注入的事务)

    一.参见hibernate的api http://tool.oschina.net/apidocs/apidoc?api=hibernate-3.6.10 http://tool.oschina.ne ...

  6. 项目中Spring注入报错小结

    之前在做单元测试时采用注解方式进行service对象的注入,但运行测试用例时对象要注入的service对象总是空的,检查下spring配置文件,我要配置的bean类xml文件已经包含到spring要加 ...

  7. 在静态方法里调用spring注入的方法

    在静态方法里直接调用非静态方法是不行的. 那如何调用spring注入的方法呢? @Component public class AutoLoginUtil {     @Autowired     p ...

  8. 基于配置文件的Spring注入

    基于配置文件的Spring注入 1.依赖注入的概述 依赖注入指的是通过Spring配置文件的方式创建对象时,直接通过配置的方式将数据注入到该对象的标量类型属性,并从Spring容器中获取指定对象注入到 ...

  9. spring注入 属性注入 构造器注入 set方法注入

    spring注入 属性注入 构造器注入 set方法注入(外部bean注入)

随机推荐

  1. node之querystring模块

    前言 querystring 模块提供了一些实用工具,用于解析与格式化 URL 查询字符串. 一.querystring.parse() 用于将一个查询字符串解析为JS 对象. const query ...

  2. mysql数据库索引类型和原理

    索引初识: 最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. CREATE TABLE mytable ( id serial primary key, c ...

  3. Spring Cloud 服务端注册与客户端调用

    Spring Cloud 服务端注册与客户端调用 上一篇中,我们已经把Spring Cloud的服务注册中心Eureka搭建起来了,这一章,我们讲解如何将服务注册到Eureka,以及客户端如何调用服务 ...

  4. public、protected、default、private区别

    public.protected.default.private: 修饰符 本类 同包 子类 其他 public √ √ √ √ protected √ √ √ × default √ √ × × p ...

  5. IF判断条件说明

    在Python中,任何非零整数都为true,0是false:判断条件也可以是任何序列(列表.元组.字符串):所有长度不为零的为true,否则为false,比如:空序列为false.简而言之:非0非空为 ...

  6. MySQL 排序

    MySQL 排序 我们知道从MySQL表中使用SQL SELECT 语句来读取数据. 如果我们需要对读取的数据进行排序,我们就可以使用MySQL的 ORDER BY 子句来设定你想按哪个字段哪中方式来 ...

  7. 全新 Kali Linux 系统安装指南

    Kali Linux 系统可以说是在安全测试方面最好的开箱即用的 Linux 发行版.Kali 下的很多工具软件都可以安装在大多数的 Linux 发行版中,Offensive Security 团队在 ...

  8. JVM的Server与Client运行模式区别与切换

    概述 JVM有两种运行模式Server与Client.两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢:但是启动进入稳定期长期运行之后Server模式的程序运行速度比Clie ...

  9. 高仿腾讯QQ最终版

    之前写过一篇关于高仿腾讯QQ的博客,不知道的看这:http://blog.csdn.net/htq__/article/details/51840273 ,主要是从界面上高仿了腾讯QQ,在UI上基本上 ...

  10. RunLoop总结:RunLoop的应用场景(四)

    今天要介绍的RunLoop使用场景很有意思,在做长期项目,需要跟踪解决用户问题非常有用. 使用RunLoop 监测主线程的卡顿,并将卡顿时的线程堆栈信息保存下来,下次上传到服务器. 参考资料 关于今天 ...