GithubHelp home page GithubHelp logo

learnspringproject's Introduction

LearnSpringProject

学习Spring的项目 工作了这么多年,一直都没有系统的学习和总结Spring的知识。现在开始复习和总结,同时也是复习一下Spring的知识。 从12年开始算起,做Java开发也有4年的时间了,很久了。。。

learnspringproject's People

Contributors

xinjian0728 avatar

Watchers

James Cloos avatar  avatar

learnspringproject's Issues

实例化Bean

Spring IoC容器如何实例化Bean呢?传统应用程序可以通过new和反射方式进行实例化Bean。而Spring IoC容器则需要根据Bean定义里的配置元数据使用反射机制来创建Bean。在Spring IoC容器中根据Bean定义创建Bean主要有以下几种方式:
一、 使用构造器实例化Bean:这是最简单的方式,Spring IoC容器即能使用默认空构造器也能使用有参数构造器两种方式创建Bean,如以下方式指定要创建的Bean类型:
 使用空构造器进行定义,使用此种方式,class属性指定的类必须有空构造器

 使用有参数构造器进行定义,使用此中方式,可以使用< constructor-arg >标签指定构造器参数值,其中index表示位置,value表示常量值,也可以指定引用,指定引用使用ref来引用另一个Bean定义,后边会详细介绍:

 <constructor-arg index="0" value="Hello Spring!"/>
 知道如何配置了,让我们做个例子的例子来实践一下吧: (1)准备Bean class(HelloImpl2.java),该类有一个空构造器和一个有参构造器: package cn.javass.spring.chapter2; public class HelloImpl2 implements HelloApi { private String message; public HelloImpl2() { this.message = "Hello World!"; } Public HelloImpl2(String message) { this.message = message; } @OverRide public void sayHello() { System.out.println(message); } }

在配置文件(resources/chapter2/instantiatingBean.xml)配置Bean定义,如下所示:

<constructor-arg index="0" value="Hello Spring!"/>
配置完了,让我们写段测试代码(InstantiatingContainerTest)来看下是否工作吧: @test public void testInstantiatingBeanByConstructor() { //使用构造器 BeanFactory beanFactory = new ClassPathXmlApplicationContext("chapter2/instantiatingBean.xml"); HelloApi bean1 = beanFactory.getBean("bean1", HelloApi.class); bean1.sayHello(); HelloApi bean2 = beanFactory.getBean("bean2", HelloApi.class); bean2.sayHello(); }

开始学习Spring#1

整个复习Spring的项目情况说明:
使用eclipse作为开发环境,使用maven管理依赖,避免去下载不同的jar,集成到项目还要处理兼容问题,使用git插件作为版本控制工具。所有编写的代码,都要写Junit测试,保证测试覆盖率。

  • 项目环境部署,创建maven web工程的时候,遇到了各种报错;eclipse集成的maven插件没有web项目的原型(archetype);搜索到了2中方法,在命令行和使用在线的Archetype Catalogs,都可以解决问题;
  • 新建了一个maven项目之后,完全不清楚一个Spring项目需要哪些jar的依赖,一方面说明平时没有做过架构方面的事情,一方面也说明没有及时收集资料,方便以后查询使用。从网上找了相关的pom文件文档,复制后编译安装,环境和项目初始化成功。
  • Spring的依赖注入,Inversion of Control也叫控制反转;在传统的开发,创建对象及组装对象间依赖关系由我们在程序内部进行控制,这样会加大各个对象间的耦合,如果我们要修改对象间的依赖关系就必须修改源代码,重新编译、部署;而如果采用Spring,则由Spring根据配置文件来进行创建及组装对象间依赖关系,只需要改配置文件即可,无需重新编译。所以,Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。
  • Spring管理依赖的例子。先写一个接口比如叫Hello,有个方法sayHello,参数是一个字符串name;然后编写接口的实现类HelloImpl,实现syaHello方法,输出字符串;编写Spring配置文件,配置bean相关的信息。编写测试类;

开始学习Spring系列#0

Spring的核心:IOC容器的实现
IOC容器和依赖反转
依赖注入
解耦代码和提高代码的可测试性
IOC是实现依赖注入的载体,它可以在对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入对方法调用的依赖。
IOC容器的设计和实现:BeanFactory和ApplicationContext,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.