spring(一)

我们在做项目的过程中,有一些所有项目都会用到的服务性的东西,如工厂,connection, session,对象,事务等。这些在任何项目中都需要用到,都需要手动重新编写代码。

spring是一个轻量级容器架构,将以上所有项目通用的服务提取出来,做成容器,之后每次需要用到这些服务的时候,直接交给spring管理,开发人员不用再手动编写代码。

接下来我们详细介绍下用 spring 来管理对象:

1. Java中对于对象的处理过程:

(1) new  ------手动编写代码 

(2) 通过工厂 new   -------手动编写代码

(3) 通过动态代理   --------手动编写代码

(4) spring  IOC 框架   -------将对象交给 spring 来处理,开发者不用关注对象的具体处理过程,不用编写大量代码

2. idea中使用 spring 的过程:

(1)引入 spring 依赖包   ------- spring.jar        log4j.jar

(2)配置配置文件 applicationContext.xml

(3)用构造函数或者 set 的方式,注入对象

(4) 用 BeanFactory去查找配置文件

我们用代码来演示:


//接口: UserDao.java

public interface UserDao {

   public void getLogin(String username, String password);
}
//UserDao 的实现类 UserDao4sql.java

public class UserDao4sql implements UserDao {


@Override
public void getLogin(String username, String password) {

   System.out.println("UserDao4sql.getLogin");
}
}
UserDao 的实现类 User4Oracle.java

public class User4Oracle implements UserDao {

@Override
public void getLogin(String username, String password) {

   System.out.println(User4Oracle.getLogin);
}
}
//接口 ManagerTester.java

 public interface ManagerTester {

   public void addUser(String username, String password);
 }
// ManagerTester的实现类 ManagerImmpl.java

public class ManagerImmpl implements ManagerTester {

      private UserDao userDao;
      //构造器的形式注入
      public ManagerImmpl(UserDao userDao) {
           this.userDao = userDao;
      }
    
      //set的形式注入 -------与构造器方式二选一, set注入是最推荐方式
      public void setUserDao(UserDao userDao) {
         this.userDao = userDao;
      }



      @Override
      public void addUser(String username, String password) {

         userDao.getLogin(username,password);
      }

}
//spring配置文件 applicationContext.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"
    xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans"
 http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd">


//真正需要配置的对象对应关系
//id只是一个标识名,可以随便写
<bean id="UserDao4sql" class="*.*.*.UserDao4sql"/>
<bean id="UserDao4Oracle" class="*.*.*.UserDao4Oracle"/>


<bean id="ManagerTester" class="*.*.*.ManagerImmpl">

    //用构造器的方式注入 配置
    <constructor-arg ref="UserDao4sql"/>
    //用 set的方式注入 配置
    <property name="userDao" ref="UserDao4sql"/>
</bean>




    
  

需要注意的两点,第一点是配置文件的配置,第二点是注入的方式。

//测试类 Client.java

public class Client {

    public static void main(String[] args) {

   BeanFactory bean = new ClassPathXmlApplicationContext("applicationContext.xml");
   ManagerTester managerTester = (ManagerTester )bean.getBean("ManagerTester ");
   managerTester .addUser("zhangsan","123456");
  }
}

spring的核心点有两点,一个是 AOP 一个是 IOC,IOC指的是控制反转,也就是说所有东西都交给spring管理,不用在代码中显示编写代码,代码中需要的话, spring自动注入进去就行。AOP指的是声明式服务,也就是说所有的管理过程都配置在配置文件中,不用编写到代码中。AOP的底层实现式 JDK 的动态代理。横向切面服务就指的是将所有共有的小服务都拿出来,放在容器中,需要用的时候由spring主动给你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值