spring in action 学习笔记(一)

来源:互联网 发布:山西省建筑业企业网络 编辑:程序博客网 时间:2024/06/16 01:41

spring 框架是由6个定义明确的模块组成,分别是Core Spring container(核心容器)、AOP(切面)、Instrumentation、Data access & integration(数据访问和集成)、Web and remoting(web和远程调用)、Testing(测试)。可以去查看spring官网,官网提供了一个定义非常明确的图来说明这个6大模块及其包含的子模块。

容器是spring框架最核心的部分,他负责spring应用中的bean的创建、配置和管理。spring的bean工厂提供了依赖注入。在bean工厂之上,你会发现几种spring应用上下文的实现,每一种提供了配置spring的不同方式。

接下来,我们的学习就是围绕bean工厂和spring应用上下文,这里要说明下,外面的企业开发基本都是基于注解的,并且依赖注入这里,大体分为三种,第一种就是最广泛使用的

web项目中,controller层注入service,service注入dao模式,另外一种就是在orm或者半orm框架中注入数据库资源,配置一些相关信息,这两种都是最常见的,剩下的第三种也是最复杂的一种就是,要根据不同的中间件配置不同的信息,注入属性。比如阿里的druid,cobar,dubbo等等一些中间件,中间件对于一个大型的系统来说十分重要,所以学会如何配置一些常用的中间件是必备的一种能力。要想熟练的使用以上这三种,最好是多熟悉一些bean注入的原理。

spring in action 一书中前面都是基于xml配置的案例来讲解的,我们也直接开始用他的样例代码来学习,简单的略过第一章节,第二章开始讲述spring的依赖注入

什么是依赖注入,spring中对象无需自己负责查找与创建与其关联的其他对象,将这个功能交给第三方也就是spring的容器来进行管理,这里要注意一个专业的名词装配(wiring),创建应用对象之间的协作关系的行为就叫做装配,这个也就是依赖注入的本质。依赖注入是spring的最基本的要素,所以在开发基于spring的应用时,无时无刻都在使用这个技术。

spring in action 第二章节开始,就举例了一个选秀大赛的场景,每位参赛者都会有一些表演能力,为此定义了一个performer的接口

/** * Created by csucoderlee on 2017 10 05 15:05. * 选秀大赛参赛的选手都有一种表演的能力 */public interface Performer {    void perform();}
然后,定义了一个杂技师,他会抛豆袋子

/** * Created by csucoderlee on 2017 10 05 16:01. * 其中有一个参赛者是一位杂技师,实现了performer的接口,接口中输出表演的内容 */public class Juggler implements Performer{    private int beanBags = 3;    public Juggler() {}    public Juggler(int beanBags) {        this.beanBags = beanBags;    }    public void perform() {        System.out.println("JUGGLING " + beanBags + " BEANBAGS");    }}


Juggler 现在只是一个普通的java类,需要我们在xml进行配置,让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">    <bean id="duke" class="com.springinaction.ch02.Juggler"></bean></beans>

<beans>是spring 核心包的命名空间,spring的核心包提供了十个命名空间,接下来的学习中,我们会一一学到的。这里声明了一个id为duke的bean,作为该bean在spring 容器中的引用,后面的class声明了他是一个Juggler类,实际上,上面的配置就相当于 Juggler duke = new Juggler()

运行上面的程序,在juggler类中添加main方法

public static void main(String[] args) {        ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/spring-beans.xml");        Performer performer = (Performer) ctx.getBean("duke");        performer.perform();    }

这时候,控制台就会输出JUGGLING 3 BEANBAGS了。

我们还可以通过构造器来注入杂技师抛多少个豆袋子,需要在bean声明的时候,加一个constructor-arg属性即可

<?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">    <bean id="duke" class="com.springinaction.ch02.Juggler">        <constructor-arg value="15"></constructor-arg>    </bean></beans>

这时候,控制台就会输出JUGGLING 15 BEANBAGS了。



原创粉丝点击