Spring框架基本原理

spring基本概念

1)struts2是web框架,hibernate是orm框架

2)spring是容器框架,创建bean,维护bean之间的关系

3)spring可以管理web层,持久层,业务层,dao层,spring可以配置各个层的组件,并且维护各个层的关系

spring核心原理

1.IOC控制反转

概念:控制权由对象本身转向容器,由容器根据配置文件创建对象实例并实现各个对象的依赖关系。

核心:bean工厂

2.AOP面向切面编程

a.静态代理

根据每个具体类分别编写代理类

根据一个接口编写一个代理类

b.动态代理

针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类

简单的Spring入门案例

1、编写一个接口:IUserDao

package com.SpringTest.Dao;

public interface IUserDao {
	
	public void getUserList();

}


2、编写一个接口的实现类:UserDaoMySQLImpl

package com.SpringTest.Dao;

public class UserDaoMySQLImpl implements IUserDao{

	public void getUserList() {
		System.out.println("Dao mysql 实现>>>>");
		
	}

}

3、编写一个Service类:UserServiceMybatisImpl

package com.SpringTest.Service;

import com.SpringTest.Dao.IUserDao;

public class UserServiceMybatisImpl implements IUserService {
private IUserDao userdao;
	
	
	// 依赖注入:1.Setter注入
	public void setUserdao(IUserDao userdao) {
		this.userdao = userdao;
	}

	public void getUsers() {
		System.out.println("通过MyBatis获取用户....");
		userdao.getUserList();
	}

}

4、Spring配置文件

<?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 -->
    <bean id="user1" class="com.SpringTest.Bean.User">
    	<property name="id" value="2"></property>
    	<property name="username" value="springman"></property>
    	<property name="sex" value="male"></property>
    	<property name="address" value="FZ"></property>
    </bean>
    
    <!-- 定义一个UserService bean -->
    <bean id="userService" class="com.SpringTest.Service.UserServiceMybatisImpl">
    	<property name="userdao" ref="userDao"></property>
    </bean>
     <!-- 定义一个UserService bean -->
     <!-- 定义一个UserDao bean -->
    <bean id="userDao" class="com.SpringTest.Dao.UserDaoMySQLImpl">
    
    </bean>
     <!-- 定义一个UserDao bean -->
    <bean id="userDaoOracle" class="com.SpringTest.Dao.UserDaoOracleImpl">
    
    </bean>

</beans>

5、编写一个测试类:UserTest

package com.SpringTest.SpringTest;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.SpringTest.Bean.User;
import com.SpringTest.Service.IUserService;

public class UserTest {
	@Test
	public void test01(){
		//IOC:控制反转  控制权 原来右调用者决定  反转到 由外部容器所决定。
		System.out.println("----方式二:调用者从Spring容器中获取 对象----");
		//方式二:调用者从Spring容器中获取 对象    ,调用者不需要必须要识别对象类型。   对象的具体类型,不是由调用者所决定的,而是由外部容器决定。
		//获取Spring容器上下文              
		ApplicationContext ac=new  ClassPathXmlApplicationContext("com/SpringTest/utils/spring01.xml");
		IUserService service=(IUserService)ac.getBean("userService");
		service.getUsers();
		
	}
}

6、运行结果

Spring总结

1.使用spring ,没有new对象,我们把创建对象的任务交给spring框架
2.spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可.
 

猜你喜欢

转载自blog.csdn.net/qq_41172982/article/details/89284431