一、Spring两大核心内容

1、控制反转IOC/DI:  应用本身不负责对象的创建和维护,对象和依赖对象的创建完全交给容器管理。

2、AOP(面向切面编程):通过预编译的方式,在运行期通过动态代理的方式来实现的一种技术

  (1)在项目中使用AOP管理事务,事务的开启,提交,回滚

  (2)在项目中管理事务的传播特性。

二、Spring的环境搭建

1、导包:  

2、创建Spring的配置文件 ApplicationContext.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns="http://www.springframework.org/schema/beans"
4
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
7
8
9 ">
10
11 </beans>

3、创建bean

<bean id="person" class="com.tx.model.Person"  >

4、创建Spring容器

1 @Test
2 public void test1(){
3 ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
4 Person p = (Person) ctx.getBean("person");
5 System.out.println(p);
6 }

三、Bean的创建方式

1、使用构造器创建(常用)

  使用构造器创建bean,bean必须有默认的构造器

2、使用静态工厂方式

  提供静态工厂:

1 public class FactoryBean {
2 /**
3 * 必须是静态方法
4 * @return
5 */
6 public static User createUser(){
7 return new User();
8 }
9 }

  进行配置:

1 <!-- id:唯一标识
2 class:静态工厂的类
3 factory-method:静态工厂的方法
4 -->
5 <bean id="user" class="com.rl.spring.factory.FactoryBean" factory-method="createUser"></bean>

3、实例工厂方式

  实例工厂:

public class FactoryBean1 {
public User createUser(){
return new User();
}
}

  配置:

1 <!-- 通过Spring来定义实例工厂 -->
2 <bean id="factoryBean" class="com.rl.spring.factory.FactoryBean1"></bean>
3 <!-- 指定要创建的bean
4 factory-bean:指定实例工厂类,
5 factory-method:工厂的创建bean的方法
6 -->
7 <bean id="user" factory-bean="factoryBean" factory-method="createUser"></bean>

4、延迟加载

在默认情况下,所有的bean都不是延迟加载的,在spring容器创建的时候把bean创建出来,所有getBean可以直接取出。。 可通过lazy-init来控制,默认是false, 如果设置为true,则在getBean时,才创建bean

5、bean的作用域

scope:singleton单例的: 可以设置延迟加载 和 非延迟加载

scope:prototype多例的:只能延迟加载

6、bean的生命周期

与容器一致,容器销毁即销毁

7、依赖注入:

  (1)、常量注入

1 <bean id="person" class="com.tx.model.Person"  >
2 <!-- 常量注入 -->
3 <property name="id" value="1"></property>
4 <property name="name" value="张三"></property>
5 </bean>

  (2)、构造器注入

 1 <bean id="user" class="com.rl.spring.model.User">
2 <!--
3 index:构造方法的参数的索引顺序
4 type:构造方法的参数的类型(不是必须 的)
5 value:值
6 -->
7 <!-- <constructor-arg index="0" type="java.lang.Integer" value="2"/>
8 <constructor-arg index="1" type="java.lang.String" value="张三"/>
9 <constructor-arg index="2" type="java.lang.String" value="666"/> -->
10 <constructor-arg index="0" value="2"/>
11 <constructor-arg index="1" value="张三"/>
12 <constructor-arg index="2" value="666"/>
13 </bean>

  (3)、外部bean注入,必须提供set方法

1 <bean id="userDao" class="com.tx.spring.dao.impl.UserDaoImpl">
2 <property name="dataSource" ref="dataSource"></property>
3 </bean>
4 <bean id="userService" class="com.tx.spring.service.impl.UserServiceImpl">
5 <property name="userDao" ref="userDao"></property>
6 </bean>

  (4)、内部bean注入,必须提供set方法

  (5)、集合注入,必须提供set方法

 1 <bean id="ci" class="com.rl.spring.model.CollectionInjection">
2 <property name="set">
3 <set>
4 <value>football</value>
5 <value>basketball</value>
6 </set>
7 </property>
8 <property name="list">
9 <list>
10 <value>male</value>
11 <value>female</value>
12 </list>
13 </property>
14 <property name="map">
15 <map>
16 <entry key="key1" value="value1"></entry>
17 <entry key="key2" value="value2"></entry>
18 </map>
19 </property>
20 <property name="prop">
21 <props>
22 <prop key="name">张三</prop>
23 <prop key="job">程序员</prop>
24 </props>
25 </property>
26 </bean>

8、注解方式注入

  (1)、引包:annocation包,如果4.2还需要引入aop包

  (2)、引入约束文件spring-context-4.2.xsd

  (3)、开启注解驱动

<!-- 开启注解的驱动 -->
<context:annotation-config/>

  @Resource注解:  放在属性上,也可以放在set方法上。  不需要提供set方法。  默认先根据名称找,如果没有按照接口与实现类的关系找,如果有多个实现类需要指定name

  @Autowired注解:放在属性上,也可放在set方法上,根据接口与实现类的关系找,如果多个实现类需要配合 @Qulifier的注解指定value

9、Spring扫描器注解  

  @Controller:控制层的类

  @Service:服务层的类

  @Repository:数据层的类

  @Component:无法分层的类上

  

Spring基础知识1--环境搭建、bean创建、依赖注入、注解注入的更多相关文章

  1. Appium基础知识与环境搭建

    基础知识:  环境搭建: 1.安装jdk,配置java环境变量 (1)新建变量"JAVA_HOME",变量值"D:\Frameworks\Java\jdk1.8.0_18 ...

  2. Spring MVC基础知识整理➣环境搭建和Hello World

    概述 Spring MVC属于SpringFrameWork的产品,采用Model-View-Controller进行数据交互,已经融合在Spring Web Flow里面.Spring 框架提供了构 ...

  3. SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)

    SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...

  4. Maven基础知识和环境搭建

    基本概念和生命周期 Maven是现在流行的构建自动化工具,提供了软件构建过程中全生命周期的管理. 基础目录结构 基础目录结构如下: 根目录:存放pom.xml 和所有的子目录 ${basedir}/s ...

  5. Android 基础知识 -- Linux环境搭建

    Android 开发工具下载网站:http://www.androiddevtools.cn/ 1 JDK 1.1 下载JDK,解压后放到/usr/lib/jvm/目录 sudo mv jdk1.7. ...

  6. spring 基础知识复习

    spring是一个分层架构,由 7 个定义良好的模块组成.Spring 模块构建在核心容器之上,核心容器定义了创建.配置和管理 bean 的方式. 组成spring框架的每个模块(或组件)都可单独存在 ...

  7. Spring基础知识

    Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...

  8. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

  9. 【转载】Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    原地址:http://blog.csdn.net/wp1603710463/article/details/48247817#t16 Maven+druid+MyBatis+spring+Oracle ...

随机推荐

  1. 温故知新——Spring AOP

    Spring AOP 面向切面编程,相信大家都不陌生,它和Spring IOC是Spring赖以成名的两个最基础的功能.在咱们平时的工作中,使用IOC的场景比较多,像咱们平时使用的@Controlle ...

  2. Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布

      本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 2.通过 ConnectablePublisher 控制何时发布.   内容概览 前言 使用 ma ...

  3. rust 模块组织结构

    rust有自己的规则和约定用来组织模块,比如一个包最多可以有一个库crate,任意多个二进制crate.导入文件夹内的模块的两种约定方式... 知道这些约定,就可以快速了解rust的模块系统. 先把一 ...

  4. java服务端实现微信小程序内容安全

    请参考微信官方文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.i ...

  5. App性能测试前需要了解的内存原理

    这两天在研究性能中内存方面的一块,网上也零散看了挺多文章,写得很细但是感觉不够整体,所以这篇算是总结一下吧,当个复习资料. 那么这里个人分为两个大部分,第一部分应用内的内存管理,主要是oom的理解,G ...

  6. 听过N次还是不会之:浏览器输入url后到底经历了什么

    有没有这种场景:当你被问起某一项知识点时,你大脑里想起经常看到过这样的问题,可是具体是怎么样就是说不清楚. 好吧,我就是这样的,于是整理一下,实在记不住,以后找起来也方便. 当你在浏览器地址栏里输入一 ...

  7. 题解 洛谷P3799 【妖梦拼木棒】

    一道水题 (还是做了一个小时,我太菜了 基本思路: 题里面说,4根棍子拼成一个正三角形(等边三角形) 若设这四根棍子长度为\(a,b,c,d\)且\(a≥b>c≥d\) 那很容易得到 (真的很容 ...

  8. 被Spring坑了一把,查看源码终于解决了DataFlow部署K8s应用的问题

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Docker & Kubernetes相关文章:容器技术 基于各种原因,团队的Kubernetes被加了限制,必须在 ...

  9. java向上转型神解析

    向上转型 经典案例 向上转型 向上转型应注意的问题 向上转型的好处 静态方法的调用 经典案例 public class Animal { public void eat(){ System.out.p ...

  10. oracle之数据限定与排序

    数据限定与排序 6.1 简单查询语句执行顺序 from, where, group by, having, order by, select where限定from后面的表或视图,限定的选项只能是表的 ...