Spring-serivce内部依赖注入方式-Set注入

Spring-serivce内部依赖注入方式-Set注入
1 Controller
public static void main(String[] args) {
        //通过配置转bean转为userService的实现
        //获取配置文件
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取bean对象
        UserService userService = app.getBean(UserService.class);
        //调用dao层的save方法
        userService.save();
    }
2 Serivce层
public interface UserService {
    void save();
}

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    //进行set注入
    public void setUserDao(UserDao userDao){
        this.userDao = userDao;	
	}
}

public void save() {
        userDao.save();
    }
3 Dao层
public interface UserDao {
    public void save();
}
public class UserDaoImpl implements UserDao {
    private List<String> strList;
    private Map<String, User> userMap;
    private Properties properties;

    public void setStrList(List<String> strList) {
        this.strList = strList;
    }

    public void setUserMap(Map<String, User> userMap) {
        this.userMap = userMap;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
    @Override
    public void save() {
        System.out.println("save running");
//        System.out.println(name+"======"+age);
        System.out.println(strList);
        System.out.println(userMap);
        System.out.println(properties);
    }
}

配置文件
 <bean id="UserService" class="service.Impl.UserServiceImpl">
        <property name="UserDao" ref="UserDao"></property>
        <!--ref路径在这一步在spring内部注入了UserDao-->
    </bean>

    <bean id="UserService" class="service.Impl.UserServiceImpl" p:userDao-ref="UserDao"/>

图片化描述
在这里插入图片描述

总结

使用set注入将dao直接注入到serivce中,这样直接在Spring容器中使得serivce对象中含有了dao对象,这样在serivce对象中使用set方法指定对象产生了关联。

我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上的对象来协作完成,在没有使用Spring的时候,每个对象在需要使用他的合作对象时,自己均要使用像new object() 这样的语法来将合作对象创建出来,这个合作对象是由自己主动创建出来的,创建合作对象的主动权在自己手上,自己需要哪个合作对象,就主动去创建,创建合作对象的主动权和创建时机是由自己把控的,而这样就会使得对象间的耦合度高了,A对象需要使用合作对象B来共同完成一件事,A要使用B,那么A就对B产生了依赖,也就是A和B之间存在一种耦合关系,并且是紧密耦合在一起,而使用了Spring之后就不一样了,创建合作对象B的工作是由Spring来做的,Spring创建好B对象,然后存储到一个容器里面,当A对象需要使用B对象时,Spring就从存放对象的那个容器里面取出A要使用的那个B对象,然后交给A对象使用,至于Spring是如何创建那个对象,以及什么时候创建好对象的,A对象不需要关心这些细节问题(你是什么时候生的,怎么生出来的我可不关心,能帮我干活就行),A得到Spring给我们的对象之后,两个人一起协作完成要完成的工作即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值