Spring的基础用法(一)

1、Spring概述:

1)Spring是一个分层的“一站式”轻量级开源框架。

2)Spring中的两大核心技术:IOC和AOP:

IOC(Inverse of Control 反转控制): 将对象创建权利交给Spring工厂进行管理。

AOP(Aspect Oriented Programming 面向切面编程),基于动态代理功能增强。

3)Spring的优势:

①方便解耦,简化开发

②AOP编程的支持

③声明式事务的支持

④方便程序的测试

⑤方便集成各种优秀框架

⑥降低JavaEE API的使用难度

2、Spring IOC入门:

1)IOC,它是Inverse of Control的缩写,中文含义是控制反转,表示将对象的创建权力反转给Spring框架!!

IOC解决的问题:使用IOC可以解决的程序耦合性高的问题。

2)什么是程序的耦合:类与类之间有些不可避免的依赖关系,这种依赖关系称之为耦合。

3)创建工厂类解决耦合性的问题:BeanFactory   专门用来生产bean的工厂类

4)创建配置文件彻底解决耦合性的问题:bean.xml

5)Spring开发包:官网地址:https://spring.io/

下载网址:http://repo.spring.io/libs-release-local/org/springframework/spring/

3、Spring中的工厂:

在spring中提供了两个工厂接口:

1)ApplicationContext接口:使用该接口可以获取到具体的Bean对象。

该接口下有两个具体的实现类:

①ClassPathXmlApplicationContext            -- 加载类路径下的Spring配置文件

②FileSystemXmlApplicationContext            -- 加载本地磁盘下的Spring配置文件

2)BeanFactory工厂:BeanFactory是Spring框架早期的创建Bean对象的工厂接口。

3)BeanFactory和ApplicationContext的区别:
            ①BeanFactory                -- BeanFactory采取延迟加载,第一次getBean时才会初始化Bean
            ②5ApplicationContext        -- 在加载applicationContext.xml时候就会创建具体的Bean对象的实例

4、Spring配置文件:

1)id属性:id属性是bean的唯一标识。

2)class属性:bean的全路径名。

3)scope属性:scope属性代表Bean的作用范围。

singleton:单例(默认值)

prototype:多例,在Spring框架整合Struts2框架的时候,Action类也需要交给Spring做管理,配置把Action类配置成多例!!

request:应用在web应用中,将创建的对象存入到request域中。

session:应用在web应用中,将创建的对象存入到session域中

globalsession:应用在porlet环境下使用。将创建的对象存入到全局的session中。

4)init-method属性:初始化方法。

当bean被载入到容器的时候调用init-method属性指定的方法。

5)destroy-method属性:销毁方法。

当bean从容器中删除的时候调用destroy-method属性指定的方法。

想查看destroy-method的效果,有如下条件:scope= singleton有效

web容器中会自动调用,但是main函数或测试用例需要手动调用(需要使用ClassPathXmlApplicationContext的close()方法)

5、Spring生成bean的三种方式:

1)无参构造方法:默认调用无参构造方法实例化bean。

2)静态工厂实例方法:通过调用工厂类的静态方法来生成bean。

有static修饰。在配置文件中,配置某个实现类的bean时,class属性写的不是实现类的全路径名,而是工厂类的全路径名;

factory-method:指定工厂类中静态方法的名字

3)实例工厂实例化方式:

没有static修饰。在配置文件中,用实例工厂方法来实例化。

factory-bean:指定工厂bean的id;

factory-method:指定工厂bean的实例工厂方法的名字。

6、依赖注入:

1)什么是依赖注入:

IOC和DI的概念:
 ① IOC        -- Inverse of Control,控制反转,将对象的创建权反转给Spring。
 ②DI        -- Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中。

2)构造方法注入:构造方法注入就是利用bean的构造方法完成对bean中属性的赋值。提供有参构造方法。

配置文件中配置:<constructor-arg name="" value=""></constructor-arg>

3)set方法注入:就是利用bean中属性的set方法对属性赋值。提供实体类中属性的set方法,不需要提供有参构造方法。

配置文件中配置:普通属性用value指定值,对象属性用ref指定需要注入的bean的id。

<bean id="" class="实体类的全路径">

      <property name="" value=""></property>

      <property name="" ref=""></property>

</bean>

4)set方法其他注入写法:

①p命名空间的写法:

语法:p:简单属性名=”值”

           p:对象属性名-ref=”bean的id”

②SpEL(Spring Expression Language)的写法:

SpEL注入的语法是:

        注入字符串:#{‘字符串’}

        注入数字:#{数字}

        注入其它对象:#{对象id}

5)数组或list注入:配置文件中配置:

<bean id="" class="实体类的全路径">

     <property name="list">

            <list>

                <value>1</value>

                <value>2</value>

                <value>3</value>

            </list>

     </property>

</bean>

6)Set集合的注入:

①添加一个Set类型的属性并提供set方法

②为Set类型的属性注入值

③spring在注入set的时,给我们注入的是一个LinkedHashSet,所以在输入set集合中的元素时,是按照我们注入的顺序来的,并不是无序的

7)Map集合的注入:

①添加一个Map类型的属性并提供set方法

②为Map输入注入值

<property name="map">

       <map>

           <entry key="id" value="1"></entry>

       </map>

    </property>

说明:<entry>表示map中的一个键值对;<entry>的key表示键,value表示值;

8)Properties的注入:

①添加一个Properties类型的属性并提供set方法

②给Properties类型的属性注入值

<property name="properties">

          <props>

             <prop key="id">2</prop>

          </props>

     </property>

说明:<prop>:表示一个键值对;<prop>中的key表示键,在<prop></prop>中写的是值;

9)配置文件的分离:

Spring配置文件的分离有两种方式:

方式一:在applicationContext.xml中采用import标签导入另一个配置文件。<import resource="xxx.xml"/>

方式二:在实例化ApplicationContext的时候,指定多个配置文件。

7、Spring IOC的注解开发:

1)创建Java工程并导入jar包

2)创建包结构并编写Java类

3)在Java类上添加注解:@Component

4)在applicationContext.xml中引入约束

5)在applicationContext.xml中开启注解扫描:

<context:component-scan base-package=""></context:component-scan>

8、Spring框架中bean管理的常用注解:

1)用于创建对象的有四个:@Component,@Controller,@Service,@Repository

2)用于给对象中的属性注入值有四个:@Value,@Autowired,@Qualifier,@Resource

3)用于改变作用范围:​​​​​​​@Scope指定bean的作用域,默认值是singleton,单例的。

4)用于定义生命周期:加在方法上 @PostConstruct注解,@PreDestroy注解,

                                     相当于:<bean id="" class="" init-method="" destroy-method="" />

注意:要看到@PreDestroy的效果,需要调用ClassPathXmlApplicationContext.close方法,同时scope的值要是singleton

9、XML和注解的比较:

注解的优势:配置简单,维护方便。(我们找到了类,就相当于找到了配置)

XML的优势:修改时,不用改源码。不涉及重新编译和部署。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值