栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring浅总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring浅总结

Spring 3.5.19官方文档
Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOC)的框架
其优点包括

  • Spring是一个开源的免费的框架
  • Spring是轻量级的、非侵入式的框架(使用Spring修改并不会对之前的业务产生影响)
  • Spring支持控制反转和面向切面编程
  • Spring支持事务处理并且支持对框架的整合
1.控制反转(IOC) (1)IOC理论推导

使用最原始的代码写web网站的逻辑大致如下

但是如果代码特别多的话,后期想要维护的话代价特别的大,因此想要将控制权放在用户手中,用户想要调用哪一个DaoImpl都行,设置一个参数自己传进去就行。因此可以使用一个set接口实现,这样的话就实现控制权在用户手中

控制反转IOC是一种思想方法,依赖注入是IOC的一种实现方法。使用面向对象编程时是需要自己new一个对象,并在程序中编程对象之间的的关系。使用控制反转,对象创建是由程序自己创建的,程序员只需要在.xml文件中进行配置就行

控制反转是一种通过XML或者注解去生产或获取特定对象的方式。
在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入。

(2)创建第一个Spring程序
  1. 引入maven依赖


	org.springframework
	spring-webmvc
	5.3.19


	org.springframework
	spring-jdbc
	5.3.19
```
  1. 创建一个需要的类(需要包含set方法)
package chong.demo1;

public class Hello {
    private String str;

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    @Override
    public String toString() {
        return "Hello{" +
                "str='" + str + ''' +
                '}';
    }
}
  1. 创建一个Application-Config.xml用来配置



    
    
		
	

  1. 测试
    读取Application-Config.xml文件,并获取想要获取的bean就可以了
 public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("Application-Config.xml");
        Hello hello= (Hello) context.getBean("hello");
        System.out.println(hello.toString());
    }

注:Hello对象创建和Hello对象的属性注入都是由Spring完成的
要实现不同的操作只需要修改相应的XML即可。所谓IOC就是对象由Spring来创建、管理和装配(bean标签的autowire属性,可以使用byType(需要保证所有的bean的class唯一)和byName(需要保证所有bean的id唯一))

2.使用注解开发
  • @Autowired:自动装配类型。名字
    如果Autowired不能唯一自动装配上属性,则需要通过@Qualifier(value=“XXX”)

  • @Nullable:如果字段标记了这个注解,说明这个字段可以为null

  • @Resource:自动装配通过名字,如果没有通过类型,如果还没有的话就报错

  • @Component:等价于在.xml中注册类(pojo类)

  • @Repository:等价于在.xml中注册类(dao层)

  • @Service:等价于在.xml中注册类(service层)

  • @Controller:等价于在.xml中注册类(Controller类)

  • @Value: 属性注入

  • @Scope:作用域注解。取值包括singleton,prototype,request,session

  • @Configuration:表示该类是一个配置类,该配置类相当于之前的ApplicationConfig.xml文件

  • @ComponentScan(“chong.demo1”):相当于context:component-scan标签,

  • @Bean:相当于一个Bean标签,其注解的方法名相当于Bean标签的id,注解的方法返回值相当于Bean标签的Class

  • @Aspect:aop中标注这个类是一个切面

  • @Before:aop中标注这个方法是在业务执行前执行

  • @Around:aop中标注这个方法是环绕业务执行

  • @After:aop中标注这个方法是在业务执行之后执行

3.面向切面编程AOP

利用AOP可以对业务逻辑的各个部分进行分离,从而使业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发效率。即AOP在不改变原有代码的情况下去增加新的功能。
AOP的底层思想是代理模式。
使用Spring实现AOP的步骤:

  • 引入jar包(maven)

	org.aspectj
	aspectjweaver
	1.9.4

  • 有三种方法进行使用
    • 方法一:使用Spring自带的API
      • 方法执行前执行(继承MethodBeforeAdvice方法)
      • 方法执行后执行(继承AfterReturningAdvice方法)
      • 在Application-Config.xml中配置



	
	
	
	
	

  • 方法二:自定义方法,然后配置其执行位置

    
    
        
        
            
            
            
            
            
            
            
        
    
  • 方法三:注解开发,记住注解
@Aspect//标注这个类是一个切面
public class AnnotationPointCut {
    @Before("execution(* service.UserServiceImpl.*(..))")
    public void before(){
        System.out.println("方法执行前");
    }
    @After("execution(* service.UserServiceImpl.*(..))")
    public void after(){
        System.out.println("方法执行后");
    }
    @Around("execution(* service.UserServiceImpl.*(..))")
    public void around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕前");
        joinPoint.proceed();
        System.out.println("环绕后");
    }
}

4.整合mybatis

mybatis是持久层框架,Spring是轻量级的控制反转IOC和面向切面AOP的框架。
步骤:

  • 引入相应的jar包
  • 不需要在mybatis核心配置文件中配置jdbc了,直接在Spring配置文件中进行配置

    
        
        
        
        
    
  • 不需要将创建SqlSessionFactory对象和创建SqlSession对象单独打成一个mybatisUtil.java文件了,可以直接将其配置在Spring配置文件中

    
        
        
        
        
    
    
    
        
    
  • 但是不同的是mybatis-Spring需要创建一个实现类,用来返回结果
//之前所有的操作都由sqlSession执行,现在都是用SqlSessionTemplate
    private SqlSessionTemplate sqlSession;
    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }
    @Override
    public List getUserList() {
        return sqlSession.getMapper(UserMapper.class).getUserList();
    }
  • 测试是和之前一样的
5.声明式事务

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/842499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号