Spring学习(1)

Spring是什么

  • 开源框架
  • 为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能
  • 是一个IOC(DI)和AOP容器框架

具体描述Spring

  • 轻量级:非侵入性的-基于Spring开发应用中的对象可以不依赖Spring的API
  • 依赖注入(DI–dependency injection,IOC)
  • 面向切面编程(AOP–aspect oriented programming)
  • 容器
  • 框架
  • 一站式

在这里插入图片描述
配置Spring环境

  • eclipse插件 Spring Tool Suite的安装,详见教程:https://blog.csdn.net/xingyun_yj/article/details/80033621
    (注意:记得一定等eclipse进度条显示下载完毕再进行重启,下载失败或许是因为网不好。。。)
  • jar包的导入
    在这里插入图片描述
    下载导入commoms- logging.jar

IOC&DI

  • IOC 反转控制

容器主动地将资源推送给它所管理的组件,组件选择合适的方式来接受资源

  • DI 依赖注入

组件以一些预先定义好的方式(例如setter方法)接受来自如容器的资源注入
在这里插入图片描述
配置Bean

  • 配置形式:基于XML文件;基于注解

  • 配置方式:通过全类名(反射),通过工厂方法(静态工厂方法&实例工厂方法),FactoryBean

  • IOC容器的实现:BeanFactory&ApplicationContext
    BeanFactory:Spring框架的基础设施,面向Spring本身
    ApplicationContext:BeanFactory的子接口,面向Spring框架的开发者,几乎所有的场合都使用ApplicationContext
    ApplicationContext的实现类在这里插入图片描述
    ClassPathXmlApplicationContext:从类路径下加载配置文件
    FileSystemXmlApplicationContext:从文件系统中加载配置文件

ApplicationContext新增方法:refresh(),close() 使具有启动,刷新,关闭上下文能力
ApplicationContext在初始化上下文时就实例化所有单例的Bean

  • 依赖注入的方式:
    属性注入:通过setter方法注入Bean的属性值或依赖对象
    构造器注入:构造器注入在元素里声明属性
    工厂方法注入(不推荐)
<!-- 配置bean
   class:bean的全类名,通过反射方式在IOC容器中创造bean,要求在bean里必须有无参构造器,若没有,则报错
   id:标识容器中的bean,id值唯一
   属性注入:<property name="name" value="Shi"></property>
   构造器注入:<constructor-arg value="240" type="int"></constructor-arg>
   -->
  <bean id="helloWorld" class="com.spring.beans.HelloWorld">
     <property name="name" value="Shi"></property>
  </bean>

<!--使用构造器注入属性值可以指定参数的位置和参数的类型,以区分重载构造器-->
 <bean id="car" class="com.spring.beans.Car">
     <constructor-arg value="baoma" type="java.lang.String"></constructor-arg>
     <constructor-arg value="240" type="int"></constructor-arg>
  </bean>

若只有有参构造器,报错情况
在这里插入图片描述

//测试类
package com.spring.beans;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");报错
是导入
import org.springframework.context.ApplicationContext;
而不是导入这个
import org.apache.catalina.core.ApplicationContext;
*/

public class Main {
	public static void main(String[] args) {
		//1.创建spring的IOC容器对象
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
		
		//2.从IOC容器中获取Bean实例(id获取和类型获取)
		//id获取:利用id定位到IOC容器中的Bean
		HelloWorld helloWorld=(HelloWorld)context.getBean("helloWorld");	
		//类型获取:利用类型返回IOC容器中的Bean,但要求IOC容器中必须只能有一个该类型的Bean
		//HelloWorld helloWorld=context.getBean(HelloWorld.class);	
		
		//3.调用hello方法
		helloWorld.hello();
		
	}
	
}
//Bean类
package com.spring.beans;

public class HelloWorld {
	private String name;
	public void setName(String name) {
		this.name = name;
	}
	public void hello() {
		System.out.println(name+",hello!");
	}
	public HelloWorld() {
		System.out.println("HelloWorld's Constructor...");
	}
	@Override
	public String toString() {
		return "HelloWorld [name=" + name + "]";
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值