spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊。

废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便。先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging。

下一步,新建xml文件,建议名称为 applicationContext.xml,当然,什么名字都随意。

<?xml version="1.0" encoding="UTF-8" ?>   
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     xmlns="http://www.springframework.org/schema/beans"  
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">   
    <bean id=" " class=" ">
       <property name=" " value=" ">
    </bean>
</beans>

之所以说spring如此的方便,是因为大部分事情都帮我们做了,或许我们只需要在里面写写bean了,但正是写写这样bean,就解决了传统程序的耦合问题。为什么呢?传统程序中,一个实例A 需要另外一个实例B 作为属性,一般都是new,这也是我们不懂spring的时候的做法,然而spring中,我们只需要在xml文件中定义好bean,而实例中直接调用就ok了,为什么,因为spring会帮我注入进来,我们不需要自己去new了。这个注入就是DI,而DI就是Spring的IOC控制反转的实现方式。

spring注入有两者方式:setter方法注入,构造方法注入。

applicationContext.xml

<?xml version="1.0" encoding="UTF-8" ?>   
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     xmlns="http://www.springframework.org/schema/beans"  
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">   
    
    <bean id="dog" class="com.xj.bean.Dog">
        <property name="name" value="judy"/>
    </bean>
</beans>

实体类Dog.java

package com.xj.bean;

public class Dog {
   private String name;

public String getName() {
	return name;
}

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

测试类:

public class TestApplicationEvent {
    public static void main(String[] args) {
    	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		Dog dog = (Dog)applicationContext.getBean("dog");
		System.out.println(dog.getName());
    }
}

结果:judy

上面所用的方法则是setter方法注入,所以此种方法要求实体bean一定的属性一定要有set方法

构造方法注入:

applicationContext.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>   
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     xmlns="http://www.springframework.org/schema/beans"  
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">   
   
     <bean id="cat" class="com.xj.bean.Cat">
         <constructor-arg value="andy"/>
          <constructor-arg value="12"/>
    </bean>
   
</beans>

实体类Cat.java

package com.xj.bean;

public class Cat {
	public String name;
	public String age;
     public Cat(String name,String age){
    	 this.name = name;
    	 this.age = age;
     }
     
}
//这里故意不放setter方法,是为了与setter

测试类:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		Cat cat = (Cat)applicationContext.getBean("cat");
		System.out.println(cat.name);
		System.out.println(cat.age);

结果:andy

12

可以看出setter方法和构造方法都能达到DI注入的效果,但是推荐用setter方法,

程序创建spring的容器applicationContext时候,就会实例化所有singleTon的bean,实例化bean时,

1.setter方法注入:先调用空的构造方法,在调用setter方法设置属性

2.构造方法注入:调用构造方法时,同时设置属性

大家想想,第2种方法该有多慢。但是第2种也有好处,可以手动设置属性加载的顺序,必须先需要加载datasource等等。

spring学习一——基本搭建,属性注入的两种方式,布布扣,bubuko.com

时间: 2024-12-19 08:55:36

spring学习一——基本搭建,属性注入的两种方式的相关文章

Spring学习笔记二(Bean注入的几种方式)

1.前言 上一篇博客从宏观上讲解了一下Spring的知识,下面这篇来着重讲解一下有关Bean注入的几种方式. 2.Bean注入的几种方式 2.1 类构造器初始化 这也是默认的方式,在上一篇博客中也有所体现.直接在applicationContext.xml配置文件中,配置Bean标签即可 <span style="font-family:SimSun;font-size:18px;"><!-- 实例工厂初始化 --> <!-- 必须先创建实例工厂对应的Be

【SSH进阶之路】Spring的IOC逐层深入——依赖注入的两种实现类型(四)

上篇博文,我们介绍了为什么使用IOC容器,和IOC的设计思想以及IOC容器的优缺点,并且给大家转载了一篇介绍IOC原理的博文,我们这篇主要给大家依赖注入的两种方式,以及他们的优缺点. 我们这篇博文还是使用上篇博客中添加用户的实力,只是给大家在注入对象的方式上发生一点点变化,为了让大家更加容易接受.下面我们开始: 构造器注入 构造器注入,即通过构造函数完成依赖关系的设定.我们看一下spring的配置文件: <?xml version="1.0" encoding="UTF

依赖注入的两种方式并附上例子

1.依赖注入:就是指程序在运行过程中,如果需要另外一个对象协助完成时,无需在代码中创建被调用者,而是依赖外部的注入获取. 2.依赖注入的两种方式: 设置注入:设置注入是通过setter方法注入被调用者的实例. 构造注入:利用构造方法来设置依赖注入的方式称为构造注入. 3.接下来附上例子来说明设置注入 (1).首先,附上设置注入的例子,新建一个Java项目,配置好Spring后,即可,项目结构图如下图所示: (2).首先,新建2个接口,一个Animal接口,一个Person接口,其中Animal接

IoC(控制反转)的主要组件和注入的两种方式

一.IoC的主要组件: (1).Spring框架的两个最基本和最重要的包是org.springframework.beans.factory(该包中的主要接口是BeanFactory)和org.springframework.context包(该包中的主要接口是ApplicationFactory).这两个包中的代码提供了Spring IoC特性的基础. (2).Spring IoC框架的主要组件有:Beans.配置文件(beans.xml或applicationContext.xml).Bea

Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)

本文介绍两种Golang的开发环境一种基于notepad++.另一种基于liteide. 1.下载Golang语言的pkg:http://golangtc.com/download 直接点击安装,一路next. 2.程序员必备神器notepad++开发Golang环境很简单 一次点击:插件->Plugin Manger->Show Plugin Manger,安装插件GOnpp,重启notepad++. 新建文件命名为hello.go用notepad++打开,拷贝如下代码: package m

JavaScript对象属性访问的两种方式

JavaScript对象属性访问的两种方式 object.attribute object["attribute"] 例如: var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush&qu

峰Spring4学习(2)依赖注入的几种方式

一.装配一个bean 二.依赖注入的几种方式 com.cy.entity   People.java: package com.cy.entity; public class People { private int id; private String name; private int age; public People() { super(); // TODO Auto-generated constructor stub } public People(int id, String n

js对象中属性调用.和[] 两种方式的区别

JS 调用属性一般有两种方法——点和中括号的方法. 标准格式是对象.属性(不带双引号),注意一点的是:js对象的属性,key标准是不用加引号的,加也可以,特别的情况必须加,如果key数字啊,表达式啊等等. 加引号是为了将其视为整体,认识一点:从对象角度,属性是不加引号的,如name,"name"这是啥,属性不可能是“name”,所以即使加了双引号,对象调用时还是要去掉引号的 例如 使用.方法 var obj = { name: "cedric" } console.

Python 防止mysql 注入的两种方式

Python防止sql注入一般有两种方法 1.escape_string MySQLdb.escape_string(param) 注意:如果报错出现 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) # 因为用户输入的字符串的字符集是ascll,但是ascll不支持中文, 所以我们可以把python的默认字符集改成utf-8就可以了 2. excute参数化传递 cur.excute