spring学习05:HelloSpring

spring学习05:HelloSpring

  • 思考问题:

  • Hello对象是谁创建的?

    • hello对象由Spring创建的;

      Hello hello = (Hello) context.getBean("hello");
  • Hello对象的属性是怎么设置的?

    • hello对象的属性是由Spring容器(就是配置文件beans.xml)设置的;

 

  • 重点:

    • 这个过程就叫做控制反转;

    • 控制:谁来控制对象的创建,传统的应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Sping来创建的;

    • 反转:程序本身不创建对象,而变成了被动的接收对象;

    • 依赖注入:就是利用set方法来进行注入的;

    • IOC是一种编程思想,由主动的编程变成被动的接收;

    • 可以通过ClassPathXmlApplicationContext看一下底层源码;

    • OK,到了现在,我们彻底不用在程序中取改动了,要实现不同的操作,只需要在xml配置文件中进行修改,所谓的IOC,一句话搞定:对象由Spring来创建,管理,装配!

 

 

  • 代码案例:beans.xml

    <?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">

       <bean id="mysqlImpl" class="com.xx.dao.UserDaoMysqlImpl"/>
       <bean id="oracleImpl" class="com.xx.dao.UserDaoOracleImpl"/>
       <bean id="userServiceImpl" class="com.xx.service.UserServiceImpl">
           <!--
               ref:引用 Spring中已经创建好的对象;
               value:基本数据类型的值;
           -->
           <property name="userDao" ref="mysqlImpl"/>
       </bean>

    </beans>
  • 代码案例:UserDaoMysqlImpl

    public class UserDaoMysqlImpl implements UserDao {
       public void getUser() {
           System.out.println("mysql获取用户数据");
      }
    }
  • 代码案例:UserDaoOracleImpl

    public class UserDaoOracleImpl implements UserDao {
       public void getUser() {
           System.out.println("oracle获取用户数据");
      }
    }
  • 代码案例:UserServiceImpl

    public class UserServiceImpl implements UserService {

       //方式1:直接new对象
       //private UserDao userDao=new UserDaoOracleImpl();

       //方式2:set方法进行动态实现值的注入!
       private UserDao userDao;

       public void setUserDao(UserDao userDao) {
           this.userDao = userDao;
      }

       public void getUser() {
           userDao.getUser();
      }

    }
  • 代码案例:Test测试

    @Test
    public void test(){
       //拿到Spring的容器
       ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
       //容器在手,天下我有;需要什么,就直接get什么
       UserServiceImpl  userServiceImpl = (UserServiceImpl) context.getBean("userServiceImpl");
       userServiceImpl.getUser();
    }

     

 

 

posted @   gzs1024  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示