spring基础描述

spring详解:

	spring 是一个轻量级的控制反转(IOPC)和面向切面(AOP)的容器框架;
	spring IOC
		IOC是控制反转 是指将对象的创建权反转给spring 作用是实现了程序的解耦合
	案例:
		1, 创建一个对象
		package com.zhang.bean;
		public class User{
		private String username;
		private String passworld;
		get  / set .....
		}

2, 书写配置注册对象到容器

	创建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-4.2.xsd ">
				<!--将User对象交给spring容器管理  ,其中name任意,class为全包名-->
			<bean name="user" class="com.sjtu.bean.User"></bean>
		</beans>

3, 代码测试

	@Test
		public void fun1(){
		//创建容器对象 
		ApplicationContext  fn = new ClassPathXmlApplicationContext("applicationContext.xml");
		//想容器 要user对象
		user u = (user)fn.getBean("user");
		System.out.printIn(u);
		}

spring IOC :

	控制反转 简单点说就是创建对象的控制权 ,被反转到Spring框架
		通常我们实例化一个对象时 都是使用类的构造方法来new一个对象 这个过程是由我们自己控制来的,而控制反转就是将new对象的工作交给spring容器
		IOC 的主要实现两种:依赖注入和依赖查找。
		依赖查找,主要是容器为组件提供一个回调接口和上下文环境。这样一来,组件就必须自己使用容器提供的API来查找资源和协作对象,控制反转仅体现在那些回调方法上,容器调用这些回调方法,从而应用代码获取到资源。
		依赖注入,组件不做定位查询,只提供标准的Java方法让容器去决定依赖关系。容器全权负责组件的装配,把符合依赖关系的对象通过Java Bean属性或构造方法传递给需要的对象。

spring AOP:

	面向切面 
	就是纵向编程 比如业务A和业务B现在需要一个相同的操作,传统方法我们可以写出相同的代码操作,而应用AOP就可以只写一遍代码,A,B公用这段代码, 并且 当AB需要增加新的操作时,可以在不动源代码的情况下,灵活添加新的业务逻辑代码。
	在实际的开发中AOP主要应用于签名验签,参数校验,日志记录,事务控制,权限控制,异常处理。
		applicationContext 和 BeanFactory
		BeanFactory接口
		spring原始接口,最底层的接口,针对原始接口的实现类功能较为单一。
		BeanFactory接口实现类的容器,特点是每次在获得对象时候才创建对象,为了节省内存。
		ApplicationContext
		每次容器启动时就会创建容器中的配置的所有
		从类路径下加载配置文件
		从硬盘绝对路径下加载配置文件

Bean 的详解

<?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-4.2.xsd ">
    <!--将User对象交给spring容器管理  ,其中name任意,class为全包名
        class属性:被管理对象的完整类名
        name属性:给被管理的对象起个名字,根据该名称获得对象
            可以重复,可以使用特殊字符
        id属性:与name属性一模一样
            名称不可重复,不能使用特殊字符
        结论:尽量使用name属性
    -->
    <bean name="user" class="com.zhang.bean.User"></bean>
</beans>

Spring 创建对象的三种方式
1

》空参创建
<beab name="user" class="com.zhang.bean.user"></bean>
2》创建容器对象 相对于src下路径
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

3》静态工厂
public static User crateUser(){
System.out.printIn("惊涛工厂创建user");//表示由用户自己创建
return new User();
}
<!--创建方式2:创建工厂创建方式 调用UserFactory的createUser 方法创建名为user2的对象放入容器-->
<bean name="user2" class="com.zhang.create.UserFactory" factory-method="createUser"></bean>
//测试
public void fun2(){
ApplicationContext ac = new ClassPathXmlApplicationContext("com/zhang/b_create/applicationContext.xml");
User u = (user) ac.getBean("user2");
}

4》实例化工厂

public User createUser2(){
System.out.printIn("实例化工厂创建User");
return new User();
}
<!--创建方式3:实例工厂创建 调用UserFactory对象的createUser2方法创建名为user3的对象,放入容器 -->
    <bean name="user3"   factory-bean="userFactory"   factory-method="createUser2"></bean>
    <bean name="userFactory"     class="com.zhang.b_create.UserFactory" ></bean>

生命周期
配置一个方法作为生命周期初始化方法spring 会在对象创建之后立即调用
init-method
配置一个方法作为生命周期的销毁方法 spring 容器在关闭并销毁所有容器中的对象之前调用
destory-method

//并在User中实现此方法
public void init() {
System.out.println(“初始化”);
}

public void destroy() {
    System.out.println("销毁");
}

分模块配置
主配置文件引入其他配置文件
//在主配置文件中做如下配置

属性注入
set 方法注入(重要 前提是set注入之前该对象提供setter方法)






构造函数注入 准备带有参数的构造 p命名空间注入
<bean name="car" class="com.sjtu.bean.Car">
    <property name="name" value="兰博基尼"></property>
    <property name="color" value="黄色"></property>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值