SpringIOC

Easter79
• 阅读 482

XML方式:

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

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

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

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

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

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

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

代码如下

public interface UserService {

public class UserServiceImpl implements UserService {

import 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)

代码如下

public interface UserDAO {

public interface UserService {

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Scope;

配置文件

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

执行

import org.junit.Test;

输出结果

UserDAOImpl被执行了init

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

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

SpringIOC

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
2年前
SpringIOC官方文档解读
IoC容器本章介绍了Spring的控制反转(IoC)容器。1.1。SpringIoC容器和Bean简介本章介绍了反转控制(IoC)原则的Spring框架实现。IoC也称为依赖注入(DI)。在此过程中,对象可以通过①构造函数参数(),②工厂方法的参数③或在构造或从工厂方法返回后在对象实例上设置的属性来定义其依
Stella981 Stella981
2年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
2年前
MyBatis接口(Bean)与配置信息(Mapper)绑定
目的MyBatis的XML配置文件解析成JAVA类并在内存中存储,但是在程序运行时需要对应的类去调用,而相应的调用类还没有实例化,现在流行的都是使用Spring去管理需要的对象,Spring提供2种方式,分别为XML与注解。下面来分析调用类的实例化及与配置绑定。1XML方式<bean id"menuMapper" cl
Stella981 Stella981
2年前
Spring 学习笔记(三):Spring Bean
1Bean配置Spring可以看做是一个管理Bean的工厂,开发者需要将Bean配置在XML或者Properties配置文件中。实际开发中常使用XML的格式,其中<bean中的属性或子元素如下:id:Bean在BeanFactory中的唯一标识,在代码中通过BeanFac
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
2年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k