SpringIOC

XML方式:

IOC:控制反转的底层原理就是:工厂模式+反射+配置文件
**DI:**依赖注入就是通过配置文件设置属性值

BeanFactory 是老版本的工厂类:调用getBean的时候,才会生成类的实例
ApplicationContext 是新版本的工厂类:加载配置文件的时候,就会将Spring管理的类都实例化

ApplicationContext有两个实现类:
ClassPathXmlApplicationContext :加载类路径下的配置文件
FileSystemXmlApplicationContext :加载文件系统下的配置文件

**<bean>**标签
id 使用了约束中的唯一约束,里面不能出现特殊字符
name 没有使用约束中的唯一约束(理论上可以重复,实际开发中不能出现重复),可以出现特殊字符

bean生命周期的配置
**init-method:**Bean被初始化的时候执行的方法
destroy-method: Bean被销毁的时候的方法(Bean是单例创建,工厂关闭)

Bean作用范围的配置:
scope Bean的作用范围
singleton 默认的,Spring会采用单例模式创建这个对象
prototype 多例模式,用一次new一个(Struts2和spring整合的时候一定会用到)

P名称空间的属性注入
普通属性   p:属性名="值"
对象属性   p:属性名-ref="值"

代码如下

1public interface UserService { 2 3public class UserServiceImpl implements UserService { 4 5import java.util.Arrays;

配置文件

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

ApplicationContext2.xml

<?xml version="1.0" encoding="UTF-8"?>

执行

import org.junit.Test;

得到结果

save..name=李东;age=30;price=2000;student=Student{name='学生', arrs=[张三, 李四, 王五], list=[1, 2, 3], set=[a, b, c], map={1=a, 2=b, 3=c}}

注解的方式

Spring包括的模块

web层:springmvc
service层:bean管理,声明式事物
DAO层:ORM模块、jdbc模板

IOC注解方式,可以不提供set方法
属性如果有set方法,注解添加到set方法上,没有set方法就添加到属性上

注解详解
@Component:组件
衍生:@Controller web层的类、@Service service层的类、@Repository DAO层的类(一般用这个)

普通属性:@Value
对象属性:@Autowired 习惯是和@Qualifier一起使用

@Resource(一般用这个)

生命周期相关注解
@PostConsruct 初始化
@PreDestroy 销毁

Bean作用范围
@Scope(singleton/prototype)

代码如下

1public interface UserDAO { 2 3public interface UserService { 4 5import org.springframework.beans.factory.annotation.Autowired; 6 7import org.springframework.context.annotation.Scope;

配置文件

<?xml version="1.0" encoding="UTF-8"?>

执行

import org.junit.Test;

输出结果

UserDAOImpl被执行了init

总结:一般XML用来管理Bean,注解完成属性注入

欢迎关注我的微信公众号:安卓圈

本文分享自微信公众号 - 安卓圈(gh_df75572d44e4)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

SpringIOC官方文档解读

IoC容器本章介绍了Spring的控制反转(IoC)容器。1.1。SpringIoC容器和Bean简介本章介绍了反转控制(IoC)原则的Spring框架实现。IoC也称为依赖注入(DI)。在此过程中,对象可以通过①构造函数参数(),②工厂方法的参数③或在构造或从工厂方法返回后在对象实例上设置的属性来定义其依