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),使用即可.
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security 是一款基于 Spring 框架的安全框架,其基本原理可概括如下: 1. 认证(Authentication):Spring Security 提供了多种认证方式,包括表单认证、HTTP 基本认证、OpenID 认证、LDAP 认证等,可以根据具体需求进行选择。认证的目的是验证用户身份以及权限信息。 2. 授权(Authorization):Spring Security 支持基于角色的访问控制(Role-Based Access Control, RBAC)和基于资源的访问控制(Resource-Based Access Control, RBAC),通过授权可以限制用户访问资源的权限。 3. 过滤器链(Filter Chain):Spring Security 的核心就是一系列过滤器,这些过滤器组成了一个过滤器链,每个过滤器负责不同的安全功能。比如,UsernamePasswordAuthenticationFilter 是用来处理用户名密码认证请求的过滤器,AccessDecisionManager 是用来进行授权决策的过滤器等。 4. 安全上下文(Security Context):Spring Security 通过 SecurityContextHolder 来管理安全上下文,其中包括了认证信息、授权信息等。 5. 集成其他框架(Integration with Other Frameworks):Spring Security 可以和其他框架进行集成,比如 Spring MVC、Spring Boot、Spring Cloud 等,以实现更完善的安全保护。 综上所述,Spring Security 的基本原理是基于认证、授权、过滤器链、安全上下文以及集成其他框架等实现的,可以帮助开发者快速实现安全保护功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值