Java : Spring基础 IOC
使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
创建一个工厂,可以用 getBean()获取一个交给spring管理的类实例.
XML配置文件:
bean标签里面id代表名字(name和id差不多,有一些区别),getBean就需要这个id.
class 代表用哪一个类生成实例对象.
init-method 可以指定对象被实例化之后执行的一个方法,需要在类里面实现这个方法
destroy-method 指定对象被销毁之前执行的方法,(前提:是单例(默认就是单例),而且在工厂关闭时才会被销毁.)
scope 代表bean的作用范围:
singleton: 默认, 单例模式
prototype: 多例模式
request: 应用在web项目中,创建之后放到request范围中
session: 应用在web项目中,创建之后放到session范围中
globalsession: 应用在web项目中,必须在porlet环境下使用,如果没有这种环境,那么他就相当于session
属性注入:
构造方法方式: 首先需要声明类的构造函数, 然后在配置里面如:
<bean id="userService" class="com.smile.myweb.UserServiceImpl" scope="prototype">
<constructor-arg name="name" value="哈哈"/>
<constructor-arg name="age" value="18"/>
</bean>
set方法方式:需要声明set方法,然后配置:
<bean id="userService" class="com.smile.myweb.UserServiceImpl" scope="prototype">
<property name="name" value="哈哈"/>
<property name="age" value="18"/>
</bean>
(注意如果属性是一个对象类型,就需要用ref来设置bean的id或name,value是赋普通值用的)
p名称空间的方式(spring2.5以后)首先需要引入 xmlns:p="http://www.springframework.org/schema/p"
然后用p:user="user"赋值普通属性或者用p:user-ref="user"赋值对象属性.
SpEL的方式属性注入:value=#{'String'},字符串类型需要用单引号,对象类型直接写bean的id,也可以使用对象的属性或者方法等进行赋值.
集合类型的属性注入可以这么声明(set, map 同理):
<property name="user">
<list>
<value>王五</value>
<value>李四</value>
</list>
</property>
在xml配置文件中引入别的配置文件 <import resource="applicationContext2.xml"/>
==============================================================================
注解方式IOC:
需要在xml里面配置<context:component-scan base-package="com.smile.myweb"/>
@Component : 修饰一个类,把类交给springIOC容器(相当于<bean>), 里面value相当于类的id.
@Controller : 衍生注解,web层
@Service : 衍生注解,业务层
@Repository : 衍生注解,持久层
初始化方法的注解@PostConstruct, 加在init方法上,相当于init-method
销毁方法的注解@PreDestroy, 加在destroy方法上,相当于destroy-method
bean作用范围的注解:@Scope, 默认是singleton,prototype是多例
属性注入的注解:
@Value : 设置普通属性的值
@Autowired : 设置对象属性的值(默认是按类型来注入对象的,如果需要按id注入,需要搭配@Qualifier(value="beanId"))
(@Resource相当于 @Autowired+@Qualifier,里面的name就相当于beadId,这个是spring实现的规范)
Java : Spring基础 IOC的更多相关文章
- Java Spring的IoC和AOP的知识点速记
Spring简介 Spring解决的最核心的问题就是把对象之间的依赖关系转为用配置文件来管理,这个是通过Spring的依赖注入机制实现的. Spring Bean装配 1. IOC的概念以及在Spri ...
- Spring基础[IOC/DI、AOP]
一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...
- [转]Java Spring的Ioc控制反转Java反射原理
转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc ...
- Spring基础——IOC九种bean声明方式
Spring简介 Spring不是服务于开发web项目的功能,或业务.而是服务于项目的开发,方便各层间的解耦调用,方便对类的批量管理,是提高软件开发效率,降低后期维护成本的框架. Spring的核心思 ...
- 【JAVA SPRING】IOC与AOP
IOC(注入)有三种类型: 构造函数注入: 属性注入: 接口注入: JAVA反射: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的 ...
- Java : Spring基础 AOP
简单的JDK动态代理例子(JDK动态代理是用了接口实现的方式)(ICar是接口, GoogleCar是被代理对象, MyCC是处理方法的类): public class TestCar { publi ...
- Spring学习笔记(一) Spring基础IOC、AOP
1. 注入类型 a) Spring_0300_IOC_Injection_Type b) setter(重要) c) 构造方法(可以忘记) d) ...
- Java之Spring基础与IoC
Spring About Spring 开源免费框架,轻量级,非入侵式框架.Spring就是一个轻量级的控制反转(IOC)和面向切片编程(AOP)的框架 Maven repo:Spring Web M ...
- Java回顾之Spring基础
第一篇:Java回顾之I/O 第二篇:Java回顾之网络通信 第三篇:Java回顾之多线程 第四篇:Java回顾之多线程同步 第五篇:Java回顾之集合 第六篇:Java回顾之序列化 第七篇:Java ...
随机推荐
- idea引入依赖包报错
今天在更新项目的时候,maven依赖的一个服务一直报错.查了后发现原来是因为缺少依赖包.但是依赖包明明在我本地啊. 又重新下载,依然如故... 搞了半天,发现自己的依赖包类状态都是不可用的.如下图所示 ...
- metasploit 连接database相关问题
我们首先去这个目录下看database.yml文件内容: 下图是我们看到的的信息 接着打开metasploit,运行db_connect 指令链接数据库.格式为: db_connect 用户名:密码@ ...
- swoole 创建tcp服务器
server.php <?php /** * 创建tcp服务器 * Date: 2019/1/15 */ $serv = new swoole_server('127.0.0.1', 9501) ...
- ZT ---- 给孩子的信(孩子写给爸爸妈妈的信在24、25、26楼)
胡同口 > 情感 > 婚后空间 > 给孩子的信(孩子写给爸爸妈妈的信在24.25.26楼) 给孩子的信(孩子写给爸爸妈妈的信在24.25.26楼)分享: 腾讯微博 新浪微博 QQ空间 ...
- Posix多线程编程学习笔记
Blaise Barney, Lawrence Livermore National Laboratory )标准制订了这一标准接口.依赖于该标准的实现就称为POSIX threads 或者Pthre ...
- Codeforces Round #436 (Div. 2)【A、B、C、D、E】
Codeforces Round #436 (Div. 2) 敲出一身冷汗...感觉自己宛如智障:( codeforces 864 A. Fair Game[水] 题意:已知n为偶数,有n张卡片,每张 ...
- 苹果手机(ios系统)蓝牙BLE的一些特点
摘自<BluetoothDesignGuidelines.pdf>文档 1. pairing: 苹果手机无法主动发起SMP配对流程,可通过以下两种方式发起配对流程: (1)从端主动发起配对 ...
- PHP中__get()和__set()的用法实例详
刚刚看到一个对我有用的文章,我就把它摘抄下来了. php面 ...
- 洛谷p1064 金明的预算方法
有附带条件的01背包 要那附件必须拿主件 因为一个主件最多有两个附件,所以每次遇到主件可能有四种选择 1.只拿主件 2.拿主件和一号附件 3.拿主件和二号附件 4.都拿 #include <cs ...
- Redis数据类型(上)
数据类型 1.string(字符串) 2.hash(哈希,类似java里的Map) 3.list(列表) 4.set(集合) 5.zset(sorted set:有序集合) 6.基数 String(字 ...