Spring框架

1、什么是spring

spring是一个分层的java EE应用full-stack轻量级开源框架,以IOC(反转控制)和AOP(面向切面编程)为内核

2、Spring的优势

1)方便解耦、简化开发通过spring提供的IOC容器,可以将对象间的依赖关系交给spring进行控制2)AOP编程的支持3)声明式事物的支持4)方便程序的测试5)方便集成各种优秀的框架spring对各种优秀的框架的支持 6)减低Java EE API的使用难度7)经典学习的范例

3、Spring的开发步骤

1)导入spring开发的基本包坐标2)编写Dao接口和实现类3)创建Spring核心配置文件4)在Spring配置文件中配置UserDaoImpl5)使用spring的API获得Bean实例

Spring Bean的配置

Spring配置文件

配置bean

class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须无参数

通过构造方法来配置Bean的属性

<bean id="car"  class="com.atguigu.spring.beans.car">​               <constructor-arg values="Audi"  index="0"><constructor-arg>​              <constructor-arg values="ShangHai"  index="1"><constructor-arg>​              <constructor-arg values="30000"  type="double"><constructor-arg><bean>
<bean>标签​                      ID属性:在容器中bean实例的唯一标识,不允许重复​                       class属性:要实例化的Bean的权限定名​                      scope属性:Bean的作用范围,常用的是Singletion(默认)和prototype<property>标签:属性注入​           name属性:属性名称​         value属性:注入的普通属性值​            ref属性:注入的对象引用值<list>标签<map>标签<properties>标签<constructor-arg>标签<import>标签:导入其他的Spring的分文件

使用构造器注入属性值可以指定参数的位置和参数的类型,以区分重载的构造器

<bean id="car2"  class="com.atguigu.spring.beans.car">`​        <constructor-arg values="Baoma"  type="java.Lang.String"><constructor-arg>​       <constructor-arg values="ShangHai"  type="java.Lang.String"><constructor-arg>​        <constructor-arg values="240"  type="int"><constructor-arg><bean>

ID:标识容器中的bean,ID唯一

1、创建spring的IOC容器对象

ApplicationContext ctx = new ClassPathXmlApplicationContext(application);

2、从IOC容器中获取Bean实例

3、调用hello方法

BeanFactory:IOC容器本身实现

ApplicationContext:从类路径加载对象

Spring 依赖注入的方式

属性注入:通过setter方法注入Bean的属性或依赖的对象,最常用的注入方式

4、Spring相应API

4.1 ApplicationContext的实现类

//测试手动去创建的c3p0的数据源
public void test1() throws PropertyVetoException, SQLException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();    dataSource.setDriverClass("com.mysql.jdbc.Driver");    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mysql");    dataSource.setUser("root");
dataSource.setPassword("123456");
Connection conn = dataSource.getConnection();
System.out.println(conn);
conn.close();}

Spring原始注解

@Component   使用在类上用于实例化Bean1、首先添加@Component("userDao")注解,需要解析加入@Autowired@Qualifier("userDao")注解2、在xml文件中,加入​```
<!--    配置组件扫描:告诉spring在哪个包上的bean需要扫描-->    <context:component-scan base-package="com.ityxnu"/>
​```如果使用的xml的注解方法,那么set方法是不能删除;如果使用的是注解方法,set方法是可以删除的@Autowried 按照数据类型从spring容器中进行匹配 的,但是主要此处@Qualifier结合@Autowried@Controller    使用web层类上用于实例化Bean@Service  使用在service层类上用于实例化Bean@Repository    使用在dao层类上用于实例化Bean@Autowired   使用在字段上用于根据类型依赖注入@Qualifier  结合@Autowired 一起使用于根据名称进行依赖注入@Resource   相当于@Autowired +@Qualifier,按照名称进行注入@Value  注入普通属性@Scope    标注Bean的作用范围

spring新注解

@Configuration    用于指定当前类是一个spring配置类,当创建容器时会从该类加载注解@ComponentScan 用于指定Spring在初始化容器时要扫描的包,作用和在Spring的xml配置文件中的<context:component-scan base-package="com.itheima"/>一样@Bean   使用在方法上,标注将该方法的返回值存储到Spring容器中@PropertySource   用于加载.properties文件中的位置@Import   用于导入其他配置类

Spring和Spring的配置相关推荐

  1. Spring之事务管理配置

    1. 基于注解的事务配置 1. 在需要添加事务的方法上加上@Transactional注解 2. Spring的配置文件中配置事务管理器 1 <!-- 添加事务管理器组件DataSourceTr ...

  2. spring amqp rabbitmq fanout配置

    基于spring amqp rabbitmq fanout配置如下: 发布端 <rabbit:connection-factory id="rabbitConnectionFactor ...

  3. Struts2+spring+jdbc 以xml配置形式整合

    今天做作业,练习一下Struts2+spring+jdbc 以xml配置形式整合 整合步骤: 工程结构图: 重要配置文件 web.xml <?xml version="1.0" ...

  4. spring cloud config将配置存储在数据库中

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! Spring Cloud Config Server最常见是将配置文件放在本地或者远程Git仓库, ...

  5. Spring 3.1 事务配置

    版权声明:原创作品,谢绝转载!否则将追究法律责任. Spring 3.1 事务配置 spring发的包最好用的是2.5.6:所依赖的包全部都有,可是后来的版本都缺这少那的,导致开发中遇到各种各样的问题 ...

  6. Spring事务——Spring 2.X的事务配置策略

    为什么80%的码农都做不了架构师?>>>    Spring 2.X的事务配置策略 虽然前面介绍的TransactionProxyFactoryBean配置策略简单易懂,但配置起来极 ...

  7. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  8. spring(16)------spring的数据源配置

    spring(16)------spring的数据源配置 在spring中,通过XML的形式实现数据源的注入有三种形式. 一.使用spring自带的DriverManagerDataSource 使用 ...

  9. Quartz 在 Spring 中如何动态配置时间

    在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间 ...

  10. 面向切面(AOP)之Spring接口方式 schema配置方式 aspectj注解方式

    一.初识AOP   关于AOP的学习可以参看帮助文档:spring-3.2.0.M2\docs\reference\html目录下index.html的相关章节      1.AOP:Aspect-O ...

最新文章

  1. 虚拟机VMware14安装kali-linux-2019.1-amd64
  2. 写markdown用于Github上readme.md文件
  3. 对OCR文字识别软件进行自动分析和识别设置的教程
  4. 双非计算机专业考研西安交通大学,2020双非一战计算机专硕初试403经验贴
  5. vue key重复_【第2112期】 import { reactive } from #39;vue#39;
  6. [每天一个知识点]26-软件工程-有多少管理是为了满足管理者的掌控感
  7. PLSQL Developer图形化窗口创建数据库全过程
  8. 从C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe返回错误
  9. python读取一个文件的大小_Python-读取文件的大小
  10. 计算机软件质量保证计划示例
  11. InstallShield 取消特定安装步骤
  12. InstallShield Limited Edition Project下载及进行打包发布汇总
  13. js实现当日期转农历日期
  14. 139显示无法imap服务器,139邮箱客户端 imap服务器
  15. 爽一把手写Bundle Adjustment
  16. 谷歌招聘 变态15题你会做几道?
  17. ”微服务一条龙“最佳指南-“最佳实践”篇:大厂服务端部署
  18. The page has expired due to inactivity. Please refresh and try again.
  19. 魔力宝贝服务器修改技能经验,【石器时代】 GM添加、命令使用、经验及倍数设置、宠添加、查找及修改【附图】...
  20. 简单聊聊Betaflight的三种飞行模式

热门文章

  1. matlab实验-拉格朗日插值的龙格(Runge)现象
  2. JS原生轮播(JS篇)
  3. Js--根据身份证号计算年龄、性别、出生年月日
  4. shp文件的可视化与编辑
  5. 0 嵌入式-ARM简介
  6. 判断一个树是否为二叉查找树
  7. 对数似然函数值/最大近然估计/log likelihood
  8. 亿欧智库发布最新研究报告 阿里云数据中台成中国乳企数字化首选方案
  9. 怎么画思维导图?玩转MindNow六大思维结构
  10. 我国目前大数据产业发展现状