Spring入门到精通(一)

一、spring简介

Spring是一个开源的控制反转(Inversionof Control ,IoC)和面向切面(AOP)的容器框架。为软件开发提供一站式解决方案。

spring是大工厂,会生产任意bean对象。

spring功能:生产bean、声明式事务、单例模式管理bean、AOP开发。

官网:http://www.springsource.org/spring-framework

下载:http://maven.springframework.org/release/org/springframework/spring/

下载的文件名spring-framework-x.x.x.RELEASE-dist.zip

libs目录下的jar包说明

spring核心API

BeanFactory:bean工厂,上产任意bean。

ApplicationContext:所有配置对象的主接口

ClassPathXmlApplicationContext:加载类路径下的配置文件

FileSystemXmlApplicationContext:加载文件系统下的配置文件

二、入门案例

1、控制反转(IOC)

IOC(Inversion of Control)是控制反转的意思,之前需要类的对象,主动new(实例化)类的对象,spring是生产bean的工厂,现在可以让spring生产对象,用户获取对象使用。

对象从原来的主动创建,变为被动获得

(1)创建项目(java或web),且导入spring的jar包

(2)创建业务层接口和实现类


(3) 在classpath下创建spring的核心配置文件,应用schema文件,配置bean。

配置文件:位置任意、文件名任意,习惯ApplicationContext.xml。

在spring-framework-4.1.0.RELEASE\docs\spring-framework-reference\html\xsd-config.html文件中有schema引用的说明。


(4)测试


2、依赖注入(DI)

DI :Dependency Injection,指在定义bean时为属性注入值。

1.      编写业务层的接口和实现类,编写持久层的接口和实现类。



2.      配置bean,给属性注入值


三、bean的装配(基于xml)

1、实例化bean

方式一:默认构造方法

当配置一个bean时,默认调用无参构造方法实例化对象


方式二:静态工厂


一般情况下应用于spring和其他框架整合的时候

方法三:对象工厂


2、bean种类和作用域

bean的种类有:

         基本bean:<bean id=”” class=””>

         FactoryBean:是一个bean,是创建特定bean对象的工厂bean。

         BeanFactory:是一个factory,可以创建任意bean对象的工厂。

bean的作用域:有bean标签的scope属性决定,默认singleton

         singleton 单例

         prototype 多例

         request一次请求

         session一次会话

3、bean生命周期

生命周期表示使用对象前或后,要执行的操作,初始化在前,销毁在后

1.    配置bean


2.   测试,要关闭ApplicationContext对象,才会调用destory方法,只有ClassPathXmlApplicationContext才有close方法。


4、属性依赖注入

依赖注入分为:手动注入和自动注入。

        手动注入:基于xml配置时使用

        自动注入:基于注解使用

               又分:按名称、按类型、不确定注入

(1)构造方法注入

   首先bean要提供无参和带参的不同构造方法,供bean使用

(2)set方法注入

利用属性的setXxx()方法给属性注入值


(3)集合注入

表示bean中的属性是数组或集合类型,注入方式



四、bean的装配(基于注解)

使用一系列的注解对bean进行实例化,同时给属性注入值。注解使用前提,添加context命名空间。且新加入spring-aop-4.1.0.RELEASE.jar包。

@Component注解

声明bean,等价于<bean class=””>,@Component(“id”),等价于<bean id=”” class=””>

@Component能表示持久层、业务层、表现层的bean。为了更好分层开发,提供和@Component功能等价的3个注解,分层表示:

         @Repository :dao层

         @Service:service层

         @Controller:web层




依赖注入

相关注解可以给私有字段设置,也可以给setter方法设置。

         普通值:@Value("")

 

         引用值:

                   方式1:按照类型注入

                            @Autowired

                   方式2:按照名称注入1

                            @Autowired

                            @Qualifier("名称")

                   方式3:按照名称注入2

                            @Resource(name="名称")

生命周期

        初始化:@PostConstruct,指定初始化方法

         销毁:@PreDestroy,指定销毁方法

         

作用域

         @Scope("prototype")


最后:在配置文件中指定要扫描的bean所在的包。


注解配置和xml配置混用

一般情况下,吧bean类用xml配置文件配,bean中的属性用注解进行注入值。

默认情况下,不会自动给属性注入值。在配置文件中加<context:annotation-config></context:annotation-config>使注解注入生效。

<context:component-scan>和<context:annotation-config>不能共存


<context:component-scan base-package=””>自动扫描指定包的bean对象,属性注入自动生效

< context:annotation-config>在xml配置和注解配置混用时使用,使属性注解注入生效。


猜你喜欢

转载自blog.csdn.net/qq_27339781/article/details/80232875