Spring

目录

Spring 两大核心技术

面向切面编程(AOP)


Spring 两大核心技术

  • 控制反转(IoC:Inversion of Control ) /依赖注入(DIDependency Injection )
  • 面向切面编程(AOPAspect Oriented Programming)

Spring的优点

  • 低侵入式设计
  • 独立于各种应用服务器
  • 依赖注入特性将组件关系透明化,降低了耦合度
  • 面向切面编程特性允许将通用任务进行集中式处理
  • 与第三方框架的良好整合

控制反转

控制反转: 将组件对象的控制权从代码本身转移到外部容器(其实就是把new对象放到了配置文件里)。

组件化的思想:分离关注点,使用接口,不再关注实现。

依赖的注入:将组件的构建和使用分开。

依赖注入:指spring创建对象的过程中,将对象依赖属性(简单值,集合,对象)通过配置设值给该对象。


  • 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
  • 反转 : 程序本身不创建对象 , 而变成被动的接收对象

---------------------------------------------------------------------------------------------

步骤

1、引入jar包

    4.0.2.RELEASE


    
      org.springframework
      spring-test
      ${spring.version}
    
    
      org.springframework
      spring-core
      ${spring.version}
    
    
      org.springframework
      spring-oxm
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      org.springframework
      spring-aop
      ${spring.version}
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-context-support
      ${spring.version}
    
    
      org.springframework
      spring-expression
      ${spring.version}
    
    
      org.springframework
      spring-orm
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    

2、创建HelloWorld类

public class HelloWorld {

    private String message;

    public void show(){

        System.out.println(message);
    }
    public void setMessage(String message) {

        this.message = message;
    }

}

3、创建spring配置文件spring.xml

4、引入头部信息

5、编写xml配置文件





    

    
        
    

6、编写测试类


public class TestHelloWorld {
    @Test
    public void TestHelloWorld(){
        //使用ClassPathXmlApplicationContext读取配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        //使用getBean("bean中ID属性值")获取对象
        HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");
        helloWorld.show();
    }


}


Spring IOC常用注解:

@Component:实现Bean组件的定义

@Repository([实例化名称]) :用于标注DAO类

@Service([实例化名称]) :用于标注业务类

@Controller :用于标注控制器类 @Autowired+@Qualifier("userDao")等价于@Resource(name = "userDao")

使用注解前需先开启注解:

详细学习参考文章:Spring全面详解

纯注解开发:

使用

@Configuration注解用于设定当前类为配置类
@ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

Spring_第1张图片

----------------------------------------------------------------------

bean标签解释: 

Spring_第2张图片

依赖注入的方式:

1、set注入


    value="Hello World!"/>

2、构造函数注入

        实例化对象默认调用无参构造函数

eg:



   
       
   

3、p命名空间注入



4..注入数组,字符串,集合.....各种类型

private String specialCharacter1; // 特殊字符值1
private String specialCharacter2; // 特殊字符值2
private User innerBean; // JavaBean类型
private List list; // List类型
private String[] array; // 数组类型
private Set set; // Set类型
private Map map; // Map类型
private Properties props; // Properties类型
private String emptyValue; // 注入空字符串值
private String nullValue = "init value"; // 注入null值




    
    
        
    

    
    
        P&G
    

    
    
        
            
                Mr. Inner
            
        
    

    
    
        
            
            足球
            篮球
        
    


    
    
        
        
            足球
            篮球
        
    
    
    
    
        
            
            足球
            篮球
        
    

    
    
        
            
            
                
                    football
                
                足球
            
            
                
                    basketball
                
                篮球
            
        
    

    
    
        
            
            足球
            篮球
        
    

    
    
        
    

    
    
        
    



----------------------------------------------------------------------

自动装配:autowrite,用于引用类型依赖注入,不能对简单类型进行操作,优先级低于setter注入与构造器注入。

byType:按类型装配,必须保障容器中相同类型的bean唯一

byName:按名称装配,必须保障容器中具有指定名称的bean

Spring_第3张图片

 

加载properties文件

Spring_第4张图片

Spring_第5张图片


面向切面编程(AOP)

        所谓面向切面编程,是一种通过预编译和运行期动态代理的方式实现在不修改源代码的情况下给程序动态添加功能技术。

原理:

  • 将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决
  • 采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能

你可能感兴趣的:(Spring,spring,java,后端)