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. 初识Redis系列之一:简单介绍

    一:Redis是什么? Redis全称:REmote DIctionary Server(Redis) .Redis是一个由Salvatore Sanfilippo写的key-value存储系统,AN ...

  2. 吴恩达深度学习第2课第3周编程作业 的坑(Tensorflow+Tutorial)

    可能因为Andrew Ng用的是python3,而我是python2.7的缘故,我发现了坑.如下: 在辅助文件tf_utils.py中的random_mini_batches(X, Y, mini_b ...

  3. Web网页树形列表中实现选中父节点则子节点全选和不选中父则子全不选

                需要实现的功能:选中父节点对应子节点全选:不选中父节点,对应子节点也不选中 如下图所示,选中车队,对应车队中车辆也全部选中,以实现车队中所有车辆在地图上的显示. 选中cqupt ...

  4. 什么样的简历受HR青睐?

    简历是我们在求职过程中的名片,那么如何写出更容易受到HR青睐的简历呢? HR可能一天要看上百份的简历,他们都希望能够尽快筛选出合适的人,然后用更多的时间去跟候选人沟通.所以招聘人员一般看一份简历只会花 ...

  5. compress函数用法详解

    compress函数: 主要用来删除字符串中的特定字符. 1.compress函数的基本形式compress(<source><, chars><, modifiers& ...

  6. tomcat连接池配置和使用

    一种方法是在conf/context.xml文件中配置,配置oracle连接池的一个例子的context内容如下: <?xml version='1.0' encoding='utf-8'?&g ...

  7. [转载]致创业者:APP已死 服务永生

    前几日,有位创业者和我讲他在带领团队做一个将爱踢球的人集中在一起的App,我告诉他你的创业方向错了.原因在于你的目的是要为爱踢球的人提供服务,而你现在却在竭尽全力的做App,你应该做的是设计你为爱踢球 ...

  8. jQuery AJAX 简介

    AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. jQuery AJAX 实例 使用 jQuery AJAX 修改文本内容 尝试一下 » 什么是 AJAX? A ...

  9. Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》

    转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...

  10. django+uwsgi+nginx+postgresql备忘

    安装pg创建数据库xxx设置用户密码111111 apt-get install postgresql su - postgres psql create database xxx; alter us ...