Spring框架技术实战①——Spring核心概念之IOC

目录

1、使用 Spring IOC 实现业务层与数据层解耦合

1、初识Spring

1、Spring 框架

2、Spring 框架的体系结构

2、Spring IOC

1、理解控制反转

 2、使用 Spring IOC 实现业务层和数据访问层解耦合

2、掌握不同类型参数的注入方法和Bean的作用域设置

1、实现不同类型的参数注入

1、注入直接量(基本数据类型、字符串)

2、引用其他Bean组件

3、使用内部Bean

4、注入集合类型的属性

 5、注入null 和空字符串值

2、设置bean的作用域 

3、使用多种方法简化 Spring IOC 的配置

1、使用P命名空间注入Bean的属性

2、在Spring配置文件中实现自动装配

3、使用注解实现Bean的定义

4、使用注解实现自动装配

5、使用注解指定Bean的作用域


1、使用 Spring IOC 实现业务层与数据层解耦合

1、初识Spring

1、Spring 框架

2、Spring 框架的体系结构

Spring框架大约有20个功能模块组成。这些模块被分成6个部分,分别是ContainerData Access/IntegrationWebAOP(Aspect Oriented Programing)InstrumentationTest

2、Spring IOC

1、理解控制反转

 如上代码两个类之间存在依赖关系。这样的代码很常见,但是存在要一个严重的问题,即代码高度耦合,程序不具备优良的可扩展性和可维护性,甚至在开发中难以测试。

改进:利用简单工厂类和工厂方法实现业务层和数据访问层的解耦合。

 2、使用 Spring IOC 实现业务层和数据访问层解耦合

下面通过一个示例讲解如何使用Spring IOC实现业务层和数据访问层的解耦合。

	public static void main(String[] args) {
		ApplicationContext app=new ClassPathXmlApplicationContext("classpath:springIOC.xml");
		
		Student s1=app.getBean(Student.class);
		//当IOC容器里有同类型的Bean对象时,可以明确指出需要哪个id的Bean
		Student s2=(Student) app.getBean("s1");
		
		System.out.println(s1);
		System.out.println(s2);
	}

2、掌握不同类型参数的注入方法和Bean的作用域设置

1、实现不同类型的参数注入

1、注入直接量(基本数据类型、字符串)

1、使用< ! [CDATA [ ] ] >标记处理XML特殊字符

2、把XML特殊字符替换为实体引用

2、引用其他Bean组件

3、使用内部Bean

4、注入集合类型的属性

1、对于List或数组类型的属性,可以使用<list>标签注入。

<list>标签可以使用<value>、<ref>标签注入集合元素,甚至是另一个list标签。

2、对于set类型的属性,可以使用<set>标签注入

 <set>标签也可以使用<value>、<ref>标签注入集合元素。

3、对于map类型的属性,可以使用如下方式注入

如果map中的键或值是bean对象,可以把上面代码中的<value>换成<ref>。

4、对于Properties类型的属性,可以使用如下方式注入

 5、注入null 和空字符串值

2、设置bean的作用域 

对于不同类型的参数注入,重点应掌握基本数据类型及其包装类、字符串及Bean类型的注入方法。

对于Bean的作用域设置,需要结合线程安全方面的知识,在应用中不断体会,做到正确选择。 

3、使用多种方法简化 Spring IOC 的配置

1、使用P命名空间注入Bean的属性

Spring配置文件从2.0版本开始使用schema形式,使用不同的命名空间管理不同类型的配置,使得配置文件更具扩展性。此外,Spring基于schema的配置方案为许多领域的问题提供了简化的配置方法,大大简化了配置的工作量。

P命名空间的特点是使用属性而不是子元素的形式配置Bean的属性,从而简化了Bean的配置。

使用传统的<property>子元素配置的代码如下:

使用 P命名空间改进配置,注意使用前要先添加p命名空间的声明。

2、在Spring配置文件中实现自动装配

 

3、使用注解实现Bean的定义

除了XML形式的配置文件,Spring从2.0版本开始引入注解的配置方式,将Bean的定义信息和Bean实现类结合在一起。

实现步骤:

①在Bean实现类中添加注解

②使用注解的配置信息启动Spring容器

 推荐使用特定的注解标注特定的实现类。

以上代码中,

首先添加context命名空间的声明,然后使用context命名空间的component-scan扫描注解标注的类。

base-package属性指定了一个需要扫描的基准包,Spring会扫描这个包里所有的类,获取Bean的定义信息。

4、使用注解实现自动装配

Spring提供了@Autowired注解实现Bean的自动装配。关键代码如下:

@Service("ssi")
public class StudentServiceImpl implements StudentService {
	// required=false:
	// 默认情况下,值为true,使用了@Autowired的属性必须赋值(IOC容器里面必有有一个)
	// 如果为false,IOC容器内有对象则注入,没有不用管
	@Autowired(required = false)
	// 明确指定需要注入那个id的bean
	@Qualifier("studentDao")
	private StudentDao sd;

	@Override
	public int addStudent(Student stu) {

		return sd.addStudent(stu);
	}

	@Override
	public int deleteStudent(int id) {
		System.out.println(sd.getName());
		return sd.deleteStudent(id);
	}
}

 5、使用注解指定Bean的作用域

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值