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">
-
三层架构
-
界面层:controller包(管理者)
-
业务逻辑层:service包
-
数据访问层:dao包
-
-
Spring框架的概述
-
Spring是一个开源免费的框架,容器。
-
Spring是轻量级的开源的JavaEE框架。
-
Spring可以解决企业应用开发的复杂性。
-
Spring有两个核心部分:IOC和AOP。
-
-
AOP:面向切面
-
就是将公共的,通用的,重复的代码单独开发,在需要的时候反织回去,底层的原理是动态代理。
-
-
IOC:控制反转(Inversion of Control)
-
由Spring容器进行对象的创建和依赖注入,程序员在使用时直接取出使用。即对象由Spring来创建,管理,装配!
-
控制:传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。
-
反转:程序本身不创建对象,而变成被动的接收对象。
-
-
依赖注入:就是利用set方法来进行注入的。
-
IOC创建对象的两种方式
-
通过无参构造方法来创建
<property name="name" value="tzw"></property>
-
通过有参构造方法来创建
//有参构造创建对象在.xml中有三种方式编写 //第一种:根据index参数下标设置,index指构造方法,下标从0开始 <constructor-arg index="0" value="tzw"></constructor-arg> <constructor-arg index="1" value="20"></constructor-arg> //第二种:根据参数名字设置(即构造方法的形参名) <constructor-arg name="name" value="tzw"></constructor-arg> <constructor-arg name="age" value="20"></constructor-arg> //第三种:根据参数类型设置(要根据参数顺序) <constructor-arg type="java.lang.String" value="tzw"></constructor-arg> <constructor-arg type="java.lang.Integer" value="20"></constructor-arg>
-
结论:在配置文件加载的时候,其中管理的对象都已经初始化了!
-
-
Spring依赖
-
spring核心依赖
-
spring-core、spring-beans、spring-context
-
-
spring dao依赖(提供JDBCTemplate)
-
spring-jdbc、spring-tx
-
-
spring web依赖
-
spring-web、spring-webmvc
-
-
spring test依赖
-
spring-test
-
-
-
setter注入
-
注入可分为简单类型注入和引用类型注入。
-
简单类型注入值使用value属性。
-
引用类型注入值使用ref属性。(这个才算依赖注入)
-
注意:使用setter注入必须提供无参的构造方法,必须提供set()方法。
-
-
使用三层架构时,上层实现类必须要有下层对象。
-
基于注解的IOC
-
也称为DI(Dependency Injection),它是IOC的具体实现的技术。
-
创建对象的注解:
-
@Component:可以创建任意对象。创建对象的默认名称是类名的驼峰命名法(首字母小写),也可以指定对象的名称 -- @Component("指定名称")。
-
@Controller:专门用来创建控制器的对象(Servlet),这种对象可以接收用户的请求,可以返回处理结果给客户端。(界面层)
-
@Service:专门用来创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕后的结果返回给界面层。(业务逻辑层)
-
@Repository:专门用来创建数据库访问层的对象,负责数据库中的增删改查所有操作。(数据访问层)
-
-
依赖注入的注解:
-
简单类型的注入:
-
@Value:用来给简单类型注入值。
@Value("张三") private String name; @Value("20") private int age;
-
-
引用类型的注入
-
@Autowired:使用类型注入值,从整个Bean工厂中搜索同源类型的对象进行注入。
-
@Autowired,@Qualifier:使用名称注入值,从整个Bean工厂中搜索相同名称的对象进行注入。(两个必须联合使用)
-
-
-
注意:基于注解的IOC,必须要在Spring的核心配置文件中添加包扫描。
<context:component-scan base-package="com.myself"></context:component-scan>
-
-
添加包扫描的方式
-
单个包扫描(推荐使用)
-
多个包扫描,多个包之间以逗号或空格隔开(或直接用*)
-
扫描根包(不推荐)
-
-
为应用指定多个Spring配置文件
-
当项目越来越大,需要多人合作开发,一个配置就存在很大隐患
-
拆分配置文件的策略:
-
按层拆(界面层、业务逻辑层、数据访问层)
-
按功能拆
-
-
-
面向切面编程AOP (Aspect Orient Programming)
-
- 点赞
- 收藏
- 关注作者
评论(0)