Spring Bean管理

spring:将系统的各个组件交由spring托管,由spring来管理各个组件的生命周期,并由spring来约定各部组建的依赖关系。
IOC容器(控制反转)DI(依赖注入)
AOP:面向切面(接口编程)
特点:
1.方便解耦,简化开发
将系统的各个组件由spring来统一管理。通过spring的ioc容器,将各个组件对象之间的依赖关系有spring控制。
通过注入setter…来实现各部组建的引用关系,从而实现松耦合。
2.AOP 面向切面(接口)
3.支持注解开发(springmvc)
4.支持各种框架集成

xml

第一:添加spring依赖包
spring-core核心容器:提供了spring框架基本功能。核心容器的主要组件BeanFactory
spring是通过Bean,来管理各部组件。

第二:配置spring主配置文件applicationContext.xml
ApplicationContext:Spring上下文接口,配置接口,提供了获取bean的方法,包括:数据源,国际化…
控制反转(IOC和DI):实际上spring通过IOC或DI促进各部组件的松耦合。我们系统的各个组件由spring托管,
当一个对象依赖另一个对象时,再次引用对象中使用setter注入,将被引用的对象实例注入至引用对象中。
反过来说:引用对象依赖于被引用对象。
面向切面:接口编程,主要是允许通过分离应用的业务逻辑与应用系统的服务(事物/事务管理器/数据源)业务剥离。

IOC操作Bean管理(基于xml方式)
1、基于xml方式创建对象
(1)在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
(2)在bean标签有很多属性,介绍常用的属性
id属性:唯一标识
class属性:类全路径(包类路径)
(3)创建对象时候,默认也是执行无参数构造方法完成对象创建

2、基于xml方式注入属性
(1)DI:依赖注入,就是注入属性
第一种注入方式:使用set方法进行注入
第二种注入方式:使用有参数构造进行注入

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	
		<!-- DI 或 IOC -->
	<bean id="userDao" class="com.iweb.dao.UserDao">
		<!-- ref 引用spring的Bean
			spring通过ref的引用,将其引用的组件对象的实例注入器name属性
				name属性必须在组件中提供setter方法
		 -->
		<property name="user" ref="userBean" />
	</bean>
	
	<bean id="userDaoImpl" class="com.iweb.dao.impl.IUserDaoInterfaceImpl">
		<property name="userDao" ref="userDao" />
	</bean>
	
	<!-- UserService -->
	<bean id="userService" class="com.iweb.service.impl.IUserServiceImpl">
		<property name="userDao" ref="userDao"/>
	</bean>
	
	<bean id="stu1" class="com.iweb.entity.Student">
		<property name="name" value="张三" />
		<property name="course"  value="java"/>
		<property name="score" value="80" />
	</bean>
	<bean id="stu2" class="com.iweb.entity.Student">
		<property name="name" value="李四" />
		<property name="course"  value="python"/>
		<property name="score" value="68" />
	</bean>
	<bean id="stu3" class="com.iweb.entity.Student">
		<property name="name" value="王五" />
		<property name="course"  value="c++"/>
		<property name="score" value="73" />
	</bean>
</beans>

TestClass.java

package com.iweb.test;

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

import com.iweb.dao.UserDao;
import com.iweb.entity.Student;
import com.iweb.service.IUserService;
import com.iweb.service.impl.IUserServiceImpl;

public class TestClass {
	private static final String _SPRING_APPLTCATTONCONTENT_FILES_ = "/applicationContext.xml";
	public static void main(String[] args){
		ApplicationContext act = new ClassPathXmlApplicationContext(_SPRING_APPLTCATTONCONTENT_FILES_);
		
		IUserService userService = (IUserServiceImpl)act.getBean("userService");
		Student s = (Student)act.getBean("stu1");
		System.out.println(s.toString());
		s = (Student)act.getBean("stu2");
		System.out.println(s.toString());
		System.out.println(((Student)act.getBean("stu3")).toString());
	}
}

Student.java

package com.iweb.entity;

public class Student {
	private String name;
	private String course;
	private double score;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCourse() {
		return course;
	}
	public void setCourse(String course) {
		this.course = course;
	}
	public double getScore() {
		return score;
	}
	public void setScore(double score) {
		this.score = score;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", course=" + course + ", score=" + score + "]";
	}
	
}

UserDao.java

package com.iweb.dao;

import com.iweb.entity.User;

public class UserDao {
	//setter注入法
	private User user;
	public void setUser(User user) {
		this.user = user;
	}
	public void sayHello() {
		System.out.println(user.getUname()+",sayHello!");
	}

}

IUserService.java

package com.iweb.service;

public interface IUserService {
	
	public void sayHello();

}

IUserServiceImpl.java

package com.iweb.service.impl;

import com.iweb.dao.UserDao;
import com.iweb.service.IUserService;

public class IUserServiceImpl implements IUserService{
	
	//setter注入法
	private UserDao userDao;
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	@Override
	public void sayHello() {
		userDao.sayHello();
	}
	
	

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值