Spring概念,底层原理,实例化三种方式

1、spring是开源的轻量级框架
2、 spring核心主要两部分:

(1)aop:面向切面编程,扩展功能不是修改源代码实现

      (2)ioc:控制反转。

比如有一个类,类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象,把对象的创建不是通过new方式实现,而是交给spring配置类创建对象。

3、spring是一站式框架

(1)spring在javaee三层结构中,每一层都提供不同的解决技术

web层:spring mvc

service层:spring 的ioc

dao层:spring的jdcTemplate

4、spring版本

(1)hibernate5.x

(2)spring4.x

------------------------------------

spring的ioc操作:

1、把对象的创建交给spring进行管理

2、IOC操作两部分

(1)ioc的配置文件方式

(2)IOC的注解方式

ioc的底层原理:

1、ioc底层原理实用技术

(1)xml配置文件

(2)dom4j解决xml

(3)工厂设计模式

(4)反射

ioc实现原理图:


ioc入门案列:

步骤:

1、导包

导入四个核心包与支持日志输出(2个:commons-logging,log4j)的包


2、创建类,在类里面创建方法

public class User {
	public void add()
	{
		System.out.println("add()");
	}
	public static void main(String[] args) {
		User user=new User();
		user.add();
	}

}

3、创建spring配置文件,配置创建类

(1)spring核心配置文件名称和位置不是固定的

建议放到src下,官方建议:applicationContext.xml

(2)引入schema约束

进入路径:G:\spring-framework-4.3.7.RELEASE\docs\spring-framework-reference\html

找到最后一个文件:xsd-configuration.html打开以后从后往前找

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"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="User" class="cn.itcast.ioc.User">
	</bean>
</beans>

4、写代码测试对象创建

public class TestIOC {
	public static void main(String[] args) {

		ApplicationContext context = new ClassPathXmlApplicationContext(
				"bean1.xml");
		User user = (User) context.getBean("user");
		System.out.println(user);
		user.add();

	}
}

处理配置文件没有提示问题:

1、spring引入schema约束,把约束文件引入到eclipse中:

复制约束路径:

http://www.springframework.org/schema/beans/spring-beans.xsd">


spring的bean管理(xml方式):

bean的实例化方式:

1、在spring中通过配置文件创建对象

2、bean的实例化三种方式实现

(1)使用类的无参数构造方法(重点):参考上

(2) 使用静态工厂来创建

使用静态的方法返回对象

bean2.java

public class TestBean3Factory {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"bean1.xml");
Bean3 bean3 = (Bean3) context.getBean("bean3");
System.out.println(bean3);
}
}

Bean2Factory.java

public class Bean2Factory {
public static Bean2 getBean2()
{
return new Bean2();
}
}

bean.xml

<!-- 使用静态工厂创建对象 -->
	<bean id="bean2" class="cn.itcast.ioc.Bean2Factory" factory-method="getBean2"></bean>

运行:

public class TestBeanFactory {
	public static void main(String[] args) {
		System.out.println("11");
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"bean1.xml");
		System.out.println("11");
		Bean2 bean2 = (Bean2) context.getBean("bean2");
		System.out.println(bean2);
	}
}
(3)使用实例工厂创建

Bean3.java

public class Bean3 {
	public void add()
	{
		System.out.println("bean3");
	}

}
Bean3Factory.java

public class Bean3Factory {
	public Bean3 getBean3()
	{
		return new Bean3();
	}
}
Bean1.xml

<!-- 创建工厂对象 -->
	<bean id="bean3Factory" class="cn.itcast.ioc.Bean3Factory"></bean>
	<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
测试:

public class TestBean3Factory {

	public static void main(String[] args) {

		ApplicationContext context = new ClassPathXmlApplicationContext(
				"bean1.xml");

		Bean3 bean3 = (Bean3) context.getBean("bean3");
		System.out.println(bean3);}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值