spring 的依赖注入

首先 定义一个需要注入注入的bean HelloApi,通过spring来注入接口对象。
public class HelloApi
{

    private IMyFirstService myfirstService;

    public HelloApi()
    {
    };

    public HelloApi(IMyFirstService myFirstService)
    {
        this.myfirstService = myFirstService;
    }

    public void setMyfirstService(IMyFirstService myfirstService)
    {
        this.myfirstService = myfirstService;
    }

    
    public IMyFirstService getMyfirstService()
    {
        return myfirstService;
    }

    public String sayHello()
    {
        System.out.println(myfirstService.sayHello());
        return null;
    }

}


再定义一个接口类:
public interface IMyFirstService
{
    public String sayHello();
}



定义一个该接口的实现类:
public class MyFirstServiceImpl implements IMyFirstService
{
    @Override
    public String sayHello()
    {
        System.out.println("hello");
        return "hello";
    }

}


在spring中,将用两种方法进行注入:1 通过构造函数注入 2 通过setter注入

<!-- 通过构造函数注入 -->
	<bean id="firstService" class="com.myitem.service.MyFirstServiceImpl"></bean>
	<bean id="helloApi" class="com.myitem.service.HelloApi">
		<constructor-arg index="0" ref="firstService" />
	</bean>

	<!-- 通过setter方式注入 -->
	<bean id="helloApi2" class="com.myitem.service.HelloApi">
		<property name="myfirstService">
			<ref bean="firstService" />
		</property>
	</bean>

测试类:
    public static void main(String[] args) 
    {
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring/spring-mvc.xml");
        HelloApi helloApi = beanFactory.getBean("helloApi", HelloApi.class);
        helloApi.sayHello();

        HelloApi helloApi2 = beanFactory.getBean("helloApi2", HelloApi.class);
        helloApi2.sayHello();
    }

在通过setter注入的时候需要注意<property>标签中的name属性名必须要和对象的setter方法的传入参数字段名一样,要不然spring会找不到该setter方法。注意   JavaBean:是本质就是一个POJO类,但具有一下限制:

         该类必须要有公共的无参构造器,如public HelloImpl4() {};

         属性为private访问级别,不建议public,如private String message;

         属性必要时通过一组setter(修改器)和getter(访问器)方法来访问;

         setter方法,以“set” 开头,后跟首字母大写的属性名,如“setMesssage”,简单属性一般只有一个方法参数,方法返回值通常为“void”;

         getter方法,一般属性以“get”开头,对于boolean类型一般以“is”开头,后跟首字母大写的属性名,如“getMesssage”,“isOk”;

         还有一些其他特殊情况,比如属性有连续两个大写字母开头,如“URL”,则setter/getter方法为:“setURL”和“getURL”,其他一些特殊情况请参看“Java Bean”命名规范。

猜你喜欢

转载自crlcrl.iteye.com/blog/2269184