Spring基础知识1--环境搭建、bean创建、依赖注入、注解注入

一、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:无法分层的类上

  

原文地址:https://www.cnblogs.com/cat-fish6/p/8698442.html

时间: 2024-08-07 00:53:17

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

Maven基础知识和环境搭建

基本概念和生命周期 Maven是现在流行的构建自动化工具,提供了软件构建过程中全生命周期的管理. 基础目录结构 基础目录结构如下: 根目录:存放pom.xml 和所有的子目录 ${basedir}/src/main/java: java源代码 ${basedir}/src/main/resources: 资源文件,比如属性文件,配置文件 ${basedir}/src/test/java:单元测试代码 ${basedir}/src/test/resources:测试资源 编译打包以后会默认的产生

Hive基础之Hive环境搭建

Hive默认元数据信息存储在Derby里,Derby内置的关系型数据库.单Session的(只支持单客户端连接,两个客户端连接过去会报错): Hive支持将元数据存储在关系型数据库中,比如:Mysql/Oracle: 本案例采用的是将hive的元数据存储在MySQL中,故需要先安装MySQL数据库,使用的是CentOS6.4版本. MySQL安装 采用yum安装方式安装: yum install mysql #安装mysql客户端 yum install mysql-server #安装mysq

spring基础知识(三)——aop

spring基础知识(三)--aop面向切面编程 1.概念术语 aop面向切面编程(Aspect ariented Programming) 在开始之前,需要理解Spring aop 的一些基本的概念术语(总结的个人理解,并非Spring官方定义): 切面(aspect):用来切插业务方法的类. 连接点(joinpoint):是切面类和业务类的连接点,其实就是封装了业务方法的一些基本属性,作为通知的参数来解析. 通知(advice):在切面类中,声明对业务方法做额外处理的方法. 切入点(poin

ASP.NET Core 2.2 基础知识(五) 环境

原文:ASP.NET Core 2.2 基础知识(五) 环境 一.环境变量 系统启动时,会读取环境变量 ASPNETCORE_ENVIRONMENT ,并将该变量的值存储在 IHostingEnvironment.EnvironmentName 字段中.如: 新建一个 WebAPI 项目,修改 Configure 方法: public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ...... { app.R

Cocos2d-x 3.1环境搭建和创建工程

Cocos2d-x 3.x改版了很多,之前搭过一次环境,但是没截图,这次趁着重装电脑,一边搭建一边截图.此博文只是为了记录而不是为了教学,所以更多讲的是搭建过程.本文基本上参考这篇博客:http://www.idcfree.com/article-1488-1.html,这篇博客比我讲的详细多了,但是我的是菜鸟教程,喜欢看图的可以参考我的博客. 安装工具: 1.下载JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/i

【Android】cocos2d-x-3.1.1环境搭建与创建工程( Win7 32位系统)

参考资料: http://blog.csdn.net/wxc237786026/article/details/32907079 1.环境搭建 2.创建工程 2.1 VS2012运行 2.2 Android实体机运行 1.环境搭建 安装工具: 1.1.JDK 1.2.Android SDK 1.3.Android NDK 1.4.apache-ant 1.5.Python 1.6   coco2d-x-3.1.1 1.1.JDK安装与配置 参考:http://jingyan.baidu.com/

shell 脚本实战笔记(7)--集群网络相关知识和环境搭建

前言: 对网络相关的知识, 做下笔记. 包括IP地址A/B/C的分类, 静态地址的配置/DNS配置, 以及网卡相关信息查看. *) A/B/C/D类网络地址的划分 IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址 IPv4的地址划分, 可以分为5种类型, A/B/C/D/E类 A类地址: 由1字节的网络地址和3字节主机地址组成, 网络地址最高位必须是"0", 地址范围从1.0.0.0到126.0.0.0. A类网络有126个, 每个网络能容纳1亿多个主机. B类

从零开始学Xamarin.Forms(二) 环境搭建、创建项目

一.环境搭建 Windows下环境搭建: 1.下载并安装jdk及android sdk: 2.下载Xamarin.VisualStudio,可以从官方下在线安装的,也可以下载3.0.54版本的离线安装包. 3.下载完毕运行安装程序,按照提示一步一步安装即可. Mac下环境搭建: 官方在线安装 二.创建Xamarin.Forms项目 1.新建项目,选择"Blank App(Xamarin.Forms Portable)" 创建完毕后,项目结构如下图: 2.更新程序集 由于默认的Xamar

UVM系统验证基础知识0(Questasim搭建第一个UVM环境)

版权声明:本文为Times_poem原创文章,转载请告知原博主.特别声明:本文在原文基础上做了简单修改以适应文中举例在questasim下的运行,敬请原博主谅解. 需求说明:UVM系统验证 内容       :IC设计验证 来自       :时间的诗 原文:http://www.ibowen.net/a/toutiao/252197.html 1. 创建代码 在QuestaSim中建立UVM环境,使用的UVM是UVM1.1b. 如果安装的是QuestaSim 10.1c版本及以上的话,软件自动