Spring基础配置---简谈IOC

Spring框架的四大原则

1)使用POJO进行轻量级和最小侵入式开发。

2)通过依赖注入和接口编程实现松耦合。

3)通过AOP和默认习惯进行声明式编程。

4)使用AOP和模板(template)减少模块化代码。

一、概念

控制反转(Inversion of Control-IOC)== 依赖注入(dependency injection-DI)

控制反转是通过依赖注入实现的。

Spring IOC容器(ApplicationContext)负责创建Bean,并通过容器将功能类Bean注入到需要的Bean中。

所谓依赖注入是指通过spring容器负责创建对象和维护对象之间的关系;而不是传统模式对象本身通过new自身创建和解决自身依赖关系。

Spring提供使用XML、注解、Java配置、groovy配置实现Bean的创建和注入。

拓展:XML、注解、Java配置。都被称为配置元数据,所谓元数据即描述数据的数据(这就是所谓的配置)。其本身并不具备任何执行能力,只能通过外界代码来解析这些元数据进行有意义的操作;比如spring容器解析这些配置数据进行Bean的初始化、配置、管理、注入。。。

二、几个相关注解

1)声明Bean的注解:(以下注解是等效的 根据需求选用)

@Component 组件,没有明确的角色。

@Service 在业务逻辑层(service层)使用。

@Repository在数据访问层(dao层)使用。

@Controller在展示层(MVC——>SpringMVC)使用。

2)注入Bean的注解:(以下注解是等效的 根据需求选用)

@Autowired Spring提供的注解。

@Inject JSR-330提供的注解。

@Resource JSR-250提供的注解。

三、Demo

(1)功能类的Bean(以下是代码块:    (⊙﹏⊙)b体谅一下  还不会用代码块)

package com.springioc.test;

import org.springframework.stereotype.Service;

//声明FunctionService这个类是Spring管理的一个Bean

@Service

public class FunctionService(){

   public String printHappy(String UesrName){

        return UesrName+"Success, good fun!";

    }

}

(2)使用功能类的Bean(以下是代码块:    (⊙﹏⊙)b体谅一下  还不会用代码块)

package com.springioc.test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

//声明FunctionService这个类是Spring管理的一个Bean

@Service

public class UseFunctionService(){

//将FunctionService实体Bean注入到本(UseFunctionService)Bean中,

//使其具备FunctionService这个Bean 的功能

@Autowired 

 FunctionService functionService

    public String printHappy(String UesrName){

        return functionService.printHappy(UesrName);

    }

}

(3)配置类(以下是代码块:    (⊙﹏⊙)b体谅一下  还不会用代码块)

package com.springioc.test;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

//声明Config这个类是一个配置类(详情见后一节)

@Configuration

//使用@ComponentScan,自动扫描com.springioc.test此包名下所有@Service、

//@Component、@Repository、@Controller的类,并对其实例化。

@ComponentScan("com.springioc.test")

public class Config(){

}

(4)运行main方法

package com.springioc.test;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main(){

    public static void main(String[] args){

//使用Spring  AnnotationConfigApplicationContext容器读取Config这个配置类

AnnotationConfigApplicationContext comtext = new             AnnotationConfigApplicationContext(Config.class);

//获取context容器中的实例化Bean  UseFunctionService

UseFunctionService useFunctionService = context.getBean(UseFunctionService.class);

system.out.println(useFunctionService.printHappy("冉玉琦"));

context.close();

}

}

你可能感兴趣的:(Spring基础配置---简谈IOC)