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注入的更多相关文章
- Spring注入JPA+JPA事务管理
本例实现的是Spring注入JPA 和 使用JPA事务管理.JPA是sun公司开发的一项新的规范标准.在本质上来说,JPA可以看作是Hibernate的一个子集:然而从功能上来说,Hibernate是 ...
- Spring注入中byType和byName的总结
1.首先,区分清楚什么是byType,什么是byName. <bean id="userServiceImpl" class="cn.com.bochy.servi ...
- spring注入参数详解
spring注入参数详解 在Spring配置文件中, 用户不但可以将String, int等字面值注入到Bean中, 还可以将集合, Map等类型的数据注入到Bean中, 此外还可以注入配置文件中定义 ...
- 线程中无法实例化spring注入的服务的解决办法
问题描述 在Java Web应用中采用多线程处理数据,发现Spring注入的服务一直报NullPointerException.使用注解式的声明@Resource和XML配置的bean声明,都报空指针 ...
- FlushMode属性与transaction(spring注入的事务)
一.参见hibernate的api http://tool.oschina.net/apidocs/apidoc?api=hibernate-3.6.10 http://tool.oschina.ne ...
- 项目中Spring注入报错小结
之前在做单元测试时采用注解方式进行service对象的注入,但运行测试用例时对象要注入的service对象总是空的,检查下spring配置文件,我要配置的bean类xml文件已经包含到spring要加 ...
- 在静态方法里调用spring注入的方法
在静态方法里直接调用非静态方法是不行的. 那如何调用spring注入的方法呢? @Component public class AutoLoginUtil { @Autowired p ...
- 基于配置文件的Spring注入
基于配置文件的Spring注入 1.依赖注入的概述 依赖注入指的是通过Spring配置文件的方式创建对象时,直接通过配置的方式将数据注入到该对象的标量类型属性,并从Spring容器中获取指定对象注入到 ...
- spring注入 属性注入 构造器注入 set方法注入
spring注入 属性注入 构造器注入 set方法注入(外部bean注入)
随机推荐
- 重构:从Promise到Async/Await
摘要: 夸张点说,技术的发展与历史一样,顺之者昌,逆之者亡.JS开发者们,赶紧拥抱Async/Await吧! GitHub仓库: Fundebug/promise-asyncawait 早在半年多之前 ...
- 独立游戏《Purgatory Ashes》的经验与总结
1.引子 游戏的灵感萌生于2015年,当时只有一些概念性的设计图. 后来我利用资源商店的素材搭建了最早的原型. 游戏的最终画面: 早期以D.P作为代号进行开发,来源于两个单词的缩写 Devil Pro ...
- JS中的DOM— —节点以及操作
DOM操作在JS中可以说是非常常见了吧,很多网页的小功能的实现,比如一些元素的增删操作等都可以用JS来实现.那么在DOM中我们需要知道些什么才能完成一些功能的实现呢?今天这篇文章就先简单的带大家入一下 ...
- Node.js 控制台
稳定性: 4 - 冻结 {Object} 用于打印输出字符到 stdout 和 stderr.和多数浏览器提供的 console 对象函数一样,Node 也是输出到 stdout 和 stderr. ...
- Bootstrap3 表格-条纹状表格
通过 .table-striped 类可以给 之内的每一行增加斑马条纹样式. 跨浏览器兼容性 条纹状表格是依赖 :nth-child CSS 选择器实现的,而这一功能不被 Internet Explo ...
- ZooKeeper之(一)ZooKeeper是什么
1.1 产生背景 当今是个分布式.集群.云计算等名词满天飞的时代.造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群.服务集群对外提供服务的过 ...
- 关于前端HTML你需要知道的一切
1.H系列标签(Header 1~Header 6) 作用: 用于给文本添加标题语义 格式: <h1>xxxxxx</h1> 注意点: H标签是用来给文本添加标题语义的, 而不 ...
- ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation
ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...
- 关于在页面中针对不同版本的IE浏览器实现不同的JS或者CSS样式
一般会用到<!--[if IE]>这里是正常的html代码<![endif]--> 条件注释只能在windows Internet Explorer(以下简称IE)下使用,因此 ...
- Java命名和目录接口——JNDI
JNDI即Java命名和目录接口(JavaNaming and Directory Interface),它属于J2EE规范范畴,是J2EE的核心技术之一,提供了一组接口.类和关于命名空间的概念.JD ...