Java学习笔记:Spring框架

1.什么是Spring?

  1.1 spring 是一个开源框架

  1.2 spirng 为简化企业级应用开发而生,使用 spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能

  1.3 spring 是一个 IOC(DI) 和 AOP 容器框架

2.Spring入门示例

   

  2.1 HelloWorld.java

package com.oneline.spring.day01;

public class HelloWorld {

    private String name;

    public void setName(String name){
        this.name=name;
    }

    public void hello(){
        System.out.println("hello:"+name);
    }
}

  2.2 Main.java

package com.oneline.spring.day01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[]args){
        // 1.创建 Spring 的 IOC 容器对象
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        // 2.从 IOC 容器中获取 Bean 的实例
        HelloWorld helloWorld=(HelloWorld) ctx.getBean("helloWorld");
        // 3.调用 hello 方法
        helloWorld.hello();
    }

}

  2.3 applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 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-4.0.xsd
 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
 http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <!-- 配置bean -->
    <bean id="helloWorld" class="com.oneline.spring.day01.HelloWorld">
        <property name="name" value="Spring"></property>
    </bean>
</beans>

    2.3.1 class: bean 的全类名,通过反射的方式中IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器

    2.3.2 id:标识容器中的bean

3.IOC & DI

  3.1 BeanFactory:IOC 容器的基本实现

  3.2 ApplicationContext:提供类更多的高级特性,是BeanFactory的子接口

  3.3 BeanFactory 是 Spring 框架的基础设施,面向Spring本身,ApplicationContext 面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext 而并非底层的 BeanFactory

  3.4 无论使用何种方式,配置文件时相同的

4.DI 依赖注入

  4.1 通过set方法注入,最常用的注入方式

  <!-- 通过 set 方法来配置 bean 的属性 -->
    <property name="name" value="Spring"></property>

  4.2 通过构造方法来注入

    4.2.1 Car.java

package com.oneline.spring.day01;

public class Car {

    private String name;

    private Integer price;

    public Car(String name, Integer price) {
        super();
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Car [name=" + name + ", price=" + price + "]";
    }
}
  <!-- 通过构造方法来配置 bean 的属性 -->
    <bean id="car" class="com.oneline.spring.day01.Car">
        <constructor-arg value="Audi" index="0" ></constructor-arg>
        <constructor-arg value="3000" type="java.lang.Integer"></constructor-arg>
    </bean>
    <!-- 如果注入的属性中含有特殊字符,参考以下写法 -->
    <bean id="car" class="com.oneline.spring.day01.Car">
        <constructor-arg index="0" >
            <value><![CDATA[<ShangHai>]]></value>
        </constructor-arg>
        <constructor-arg type="java.lang.Integer">
            <value>250</value>
        </constructor-arg>
    </bean>

PS:constructor-arg 标签的属性详解, value:注入属性的属性值 ,index:注入属性的位置, type:注入属性的类型(可以利用这些属性值调用指定的构造器)

  4.3 类之间相互引用的配置

package com.oneline.spring.day01;

public class Person {

    private String name;

    private Integer age;

    private Car car;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";
    }

}
  <bean id="person" class="com.oneline.spring.day01.Person">
        <property name="name" value="Tom"></property>
        <property name="age" value="24"></property>
        <!-- 可以使用property的ref属性来建立bean之间的引用关系 -->
        <property name="car" ref="car2"></property>
    </bean>
时间: 2024-10-17 12:31:30

Java学习笔记:Spring框架的相关文章

学习笔记--Spring框架

//概述 轻量级,一站式,开发框架 IoC,Inversion of Control,控制反转 DI,Dependency Injection,依赖注入 AOP,Aspect-Oriented Programming,面向切面编程:业务逻辑与非业务逻辑分离,如日志.安全... IoC容器: 对象创建.装配 对象生命周期管理 上下文环境 //IoC容器 IoC = ApplicationContext  (org.springframework.context,  spring-context)

Java学习笔记--Hibernate框架错误集合及解决

错误1:MappingException: Unknown entity解决方案 http://jingyan.baidu.com/article/e75aca8552761b142edac6cf.html 错误2:Could not bind factory to JNDI 2006-07-23 23:14:53,796 [main] WARN org.hibernate.impl.SessionFactoryObjectFactory - Could not bind factory to

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

我的java学习笔记(一篇文章不定时更新)

Java学习笔记 一.      原则战略思想 l  方法:快速原型 l  小目标:找一个pdf书籍快速有一个小项目出现 l  辅助:计时 记录各个学习环节的时间消耗. l  辅助:音乐 激情 l  您在博客园的登录用户名是:杂家随谈  [email protected] l 二.      WBS以及计时 步骤 计划时间 实际时间 搭建环境 2015/5/26 PDF 2015-5-26 小项目大框架实施 2015-6-1 三.      杂感 感觉难的时候,不妨站高点,站远一点看问题. 天下

java学习笔记(五)枚举

原文出处:http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951632.html 在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数据集",春夏秋冬四个数据元素组成了四季的"数据集". 在java中如何更好的使用这些"数据集"呢?因此枚举便派上了用场,以

好程序员Java干货分享Spring框架之IOC原理

好程序员Java干货分享Spring框架之IOC原理,前言:Spring框架是我们进行企业级开发的最常用框架,本章我们将了解Spring框架,并学习Spring的IOC特性以及IOC的实现原理:注解和反射. Spring框架简介 Spring是一种轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架,能够为企业级开发提供一站式服务. Spring的优点有 1.方便解耦,简化开发 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度

Java学习笔记3-操作符

Java基本操作符:+.-.*./.%.=.==.!=.+=.-=. 优先级:先乘除后加减,如果是连接符+号会优先往前匹配,比如 a+++++b,会被解释称 a++ ++ +b,所以会报错,需要自行使用括号隔离为 (a++) + (++b). 对象的引用如果赋值给了对象的引用后,2 个对象将指向同一个引用,有一个对象的引用重新赋值后将同时影响到另一个对象,比如 ClassName classA = new ClassName(); ClassName classB = new ClassName

java学习笔记10--泛型总结

java学习笔记系列: java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3--类与对象的基础 java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址:http://www.cnblogs.com/archimedes/p/java-study-note10.html,转载

Java学习笔记_25_Collections类

25.Collections类: Collections类是一个工具类,用来对集合进行操作,它主要是提供一些排序算法,包括随机排序.反相排序等. Collections类提供了一些静态方法,实现了基于List容器的一些常用算法. Collections的一些方法列表: · void sort(List): 对List内的元素进行排序. · void shuffle(List): 对List内的元素随机排序. · void reverse(List): 对List内的元素进行逆序排列. · voi