Spring入门教程

Spring入门教程,第1张

Spring入门教程

目录

工厂模式

1.什么是框架?

2.Spring的优势

3.举个User小例子

IOC控制反转

beans

单例模式

Spring中创建Bean对象的常用方式

1.使用构造方法来创建对象

2.使用静态工厂来创建对象

3.使用实例工厂方法来创建对象

依赖注入(DI注入)

1.set方法注入(跟set方法名绑定)

2.构造方法注入

3.自动注入

@Component


工厂模式


把原来分布在各个地方的对象创建的过程都单独抽离出来,统一交给工厂类来负责所需对象的创建

1.什么是框架?

1.1框架本身一般不完整
1.2在里面进行填充扩展,迎合公司的业务需求,做公司的项目
1.3为了更好的适合大多数项目,不断进行扩展,扩充的东西就是类库

2.Spring的优势

2.1方便解耦,简化开发
    Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给Spring来管理
2.2方便集成各种优秀的框架
2.3方便程序的测试
    支持Unit4,可以通过注解测试
2.4AOP编程的支持
2.5声明式事务的支持
2.6降低Java EE API的使用难度

3.举个User小例子

先在main-po里面创建一个User简单实体类,提供无参构造方法
在resource里面application.xml中写表示实体类纳入到Spring管理
调用:

BeanFactory factory = new ClassPathXmlApplicationContext("application.xml");
        User user = (User) factory.getBean("user");


解析:ClassPathXmlApplicationContext()
ClassPath:根路径     resource位置
Xml:读一个后缀是.xml文件
ApplicationContext:读里面的东西,全纳入到spring容器中
new ClassPathXmlApplicationContext(“”)表示读取appication.xml配置文件,spring把里面所有的Bean都创建出来了,通过.getBean()里面的id名确定找哪一个对象(默认情况下,配置文件中所有的Bean都要创建一遍)
getBean("id名"),有对象就有构造方法,就可以调用无参构造方法

总结:控制反转:对象创建的过程交给spring容器来管理

IOC控制反转


控制权的转移,以前由程序控制对象的创建以及对象之间的依赖关系,现在由spring容器进行管理
(对象的创建不再由调用者管理,而是由spring容器进行创建。Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制)

配置文件中详解

beans


:spring配置文件的根标签
:在spring中相当于java中的对象,需要把类配置到容器中
id="":相当于类的对象名,必须保证唯一
class="包名.类名(全限定名)":底层自动使用反射方式,创建该类的对象,并通过id进行标识(不能写接口)


把User类纳入到Spring容器中进行管理,当程序运行的时候,在spring容器中,创建一个User对象

单例模式

单例:在程序的整个运行过程中,该类有且仅有一个对象
查看是不是单例,就看地址是否一样(对象名==对象名)对象名保存的是地址值,看是否相等
scope="singleton" 单例模式(默认值),读取配置文件的时候,直接创建该类对象,并且唯一
scope="prototype" 多例模式,读取配置文件的时候,不创建该类对象,只有当每次调用getBean()时,才会创建该类对象

lazy-init="true/false":延迟加载    只有是单例的时候,延迟加载才有意义
true:懒加载,只有当使用的时候才会创建对象
false:不懒加载,读取配置文件立刻创建该类对象

init-method="init":初始化方法
destory-method="destory":销毁方法

factory.getBeanDefinitionCount():有多少Bean
factory.getBeanDefinitionNames():获取容器中所有bean的id的名字

FileSystemXmlApplicationContext():带系统字样的,全是绝对路径

Spring中创建Bean对象的常用方式 1.使用构造方法来创建对象

在bean里面,
                     

2.使用静态工厂来创建对象

创建一个factory包,里面写一个静态方法调用User

先找到工厂类,再找到工厂类里面的方法来创建对象

3.使用实例工厂方法来创建对象

3.1创建实例工厂

3.2指定工厂方法

依赖注入(DI注入)

组件(Bean)之间的依赖关系由容器在运行的时候来决定
容器动态的将依赖的组件注入到对应的bean中

1.set方法注入(跟set方法名绑定)

写dao,service实例
service实现类中写privite UserDao userDao;写set方法;
在application.xml中写


    
        
    

property中name写set方法名set后面首字母小写,ref写当前关联的bean id名(Dao中id名)
测试:

ApplicationContext factory = new ClassPathXmlApplicationContext("application.xml");
        UserService userService = (UserService) factory.getBean("userService");
        userService.addUser();
2.构造方法注入

同上,set方法换构造方法

在application.xml中写


    

        
    

constructor中name写构造方法参数名,ref写当前关联的bean id名(Dao中id名)

假设一个案例:需要换数据库

如果修改数据库,只需要重写dao层即可

之前方法:在serviceImpl中写不同的实现类
DI注入:不需要改业务层代码,只需要在配置文件中修改依赖关系

3.自动注入 @Component

在类上添加@Component注解,表示该类创建对象的权限交给spring容器。
等价于
注解的value属性用于指定bean的id值,value可以省略。
@Component不指定value属性,bean的id是类名的首字母小写

Autowire="byName"
需要注解扫描包
加了@Component,省略了
userServiceImpl中需要userDao,扫描一下,发现一个也叫userDao,自动注入到当前的对象当中然后调用

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5660253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存