spring初学配置笔记

@Spring

一.spring简述

spring是什么?
spring是分层的java SE/EE应用full-stack轻量级开源框架,以IoC(Inverse Of Control:控制反转)和AOP(Aspect OrientedProgramming:面向切面编程)为内核

二.IOC

什么是IOC?
在这里插入图片描述
spring容器在初始化时先读取配置文件,根据配置文件或元数据与组织对象存入容器中,程序使用时再从Ioc容器中取出需要的对象
在这里插入图片描述

2.1 IOC创建对象的方式
已知: user.java

class user(){
	private String username;
	private Int password;
}

演示创建user对象的几种方式:

1.下标赋值

<!--创建对象-->
<bean id="user" class="com.kaikai.pojo.user">
<!--给对象参数赋值-->
	<constructor-arg index="0" value="第一个参数username的值"/>
</bean> 

2.类型赋值

<!--通过类型创建,不建议使用-->
<bean id="user" class="com.kaikai.pojo.user">
	<constructor-arg type="java.lang.String" value="username的值"/>
</bean> 

3.参数名

<bean id="user" class="com.kaikai.pojo.user">
	<constructor-arg name="password" value="password的值"/>
</bean> 

三.Spring基本配置

1.基本配置<bean>
别名

  <alias name="user" alias="userNew"/>

bean的配置

   <bean id="自定义"  class="类的全路径">
   		<property name="str" value="我是Spring容器赋给该类属性为str的值"></property>
  </bean>

    <!--   ***bean的配置
     		id:bean的唯一标识,也就是相当于我们学的对象名
     		class:bean对象所对应的全限定名:包含+类型
     		name:也是别名 可以取多个别名    -->
    <bean id="user" class="com.kaikai.pojo.User" name="user2,u1">
         ****设置属性值***
        <property name="str" value="name的值"/>-->
    </bean>
    <!--
        ref:引用Spring容器中创建好的对象
        value:设置具体的值,基本数据类型
    -->
        <!--因为UserServletImpl中有userDao这个属性 我们给他注入一个userDao的实现类对象-->
        <bean id="UserServiceImpl" class="com.kaikai.service.UserServiceImpl">
        	<property name="userDao" ref="OracleImpl"></property>
        </bean>

(1).Bean标签范围配置
scope:指对象的作用范围,如下在这里插入图片描述

在这里插入图片描述

:在配置文件加载的时候,容器中管理的对象就已经初始化了

 	当scope属性值为singeton,每次得到的是同一个对象,
 			当配置文件被加载时创建,直到应用卸载时容器销毁
 	当scope属性值为phototype时,每次getBean()创建一个不同对象
 			当对象在使用中,就一直存在,当长时间不用时,被java的垃圾回收器回收.

(2).Bean生命周期配置
init-method:指定类中初始化方法的名称
destory-method:指定类中销毁方法的名称

2.Bean实例化的三种方式

(1).无参构造方法
前面介绍的都是无参构造方法
(2).工厂静态方法实例化
1.创建工厂类,定义静态方法

public class UserDaoFactory(){
public static User getUserDao(){
	return new UserDaoImpl();
	}
}

2.配置bean class为

<bean id="userImpl" class="com.kaikai.factory.UserDaoFactory" 
		destroy-method="getUserDao"/>

(3).工厂实例方法实例化

1.创建工厂类

//定义
public class UserFactory(){
	public UserDao getUserDao(){
		return new UseeDaoImpl();
	}
}

2.配置工厂 bean

<!--配置工厂-->
<bean id="factory" class="com.kaikai.UserFactory"></bean>
<!--配置bean-->
<bean id="userDao" factory-bean="factory" factory-method="getUserDao">

3.Bean的依赖注入概念(set方法注入+constructor构造器注入)
依赖注入:它是spring框架核心IOC的具体体现 。
在编写程序时,通过控制反转,将对象的创建交给Spring,但是代码中不可能出现没有依赖的情况,Ioc解耦只是降低他们的关系,并不会消除依赖、例如业务层调用持久层的方法
那这种业务层和持久层的关系,再使用Spring后,就让Spring来维护了。简单的来说,就是让框架把持久层传入业务层,不需要我们自己去获取。

(1)注入引用的Bean

1.set注入
已知:UserServiceImpl对象中包含属性User user;

    <!--
        ref:引用Spring容器中创建好的对象
        value:设置具体的值,基本数据类型
    -->

<!--因为UserServletImpl中有userDao这个属性 我们给他注入一个userDao的实现类对象-->
<bean id="UserServiceImpl" class="com.kaikai.service.UserServiceImpl">
	<property name="userDao" ref="OracleImpl"></property>
</bean>

在这里插入图片描述

Set注入(P命名空间注入)
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/2021052614135138.png
2.构造方法注入
在这里插入图片描述

(2)注入普通数据类型

上面的操作都是注入的引用bean,除了对象的引用可以注入,普通数据类型,集合也可以注入
注入数据的三种类型:
***普通数据类型
***引用数据类型
***集合数据类型

普通类型注入:

<bean id="UserServiceImpl" class="com.kaikai.service.UserServiceImpl">
	<property name="username" value="张三"></property>
</bean>

注入其他类型(集合,Map,properties)
在这里插入图片描述

4.Import引入其他配置文件

在这里插入图片描述

四、Spring相关API

ApplicationContext的实现类
1)ClassPathXmlApplicationContext
它是从类的根路径下加载配置文件 推荐使用这种
2)fileSystemXmlApplicationContext
它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置
3)AnnotationConfigApplicationContext
当时用注解配置容器对象时,需要使用此类来创建spring容器。用它来读取注解

getBean方法使用
在这里插入图片描述

五、Spring配置数据源

数据源(连接池)的作用
数据源(连接池)是提高程序性能出现的
事先实例化数据源,初始化部分连接资源
使用链接资源时从数据源中获取
使用完毕后将连接资源归还给数据源
常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等

开发步骤:
①导入数据源的坐标和数据库坐标
②创建数据源对象
③设置数据源的基本连接数据
④使用数据获取连接资源和归还连接数

连接方式如下: 逐层解耦合
1.手动配置连接池

@Test
public void fun() throws PropertyVetoException, SQLException {
    //得到ComboPooledDataSource
    ComboPooledDataSource dataSource= new ComboPooledDataSource();
    dataSource.setUser("root");
    dataSource.setPassword("123");
    dataSource.setDriverClass("com.mysql.jdbc.Driver");
    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydb1?serverTimezone=UTC");
    Connection connection = dataSource.getConnection();
    System.out.println(connection);
    connection.close();
}

2.properties创建连接池参数

jdbc.username=root
jdbc.password=123
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb1?serverTimezone=UTC

在这里插入图片描述

3.Spring配置

1.配置applicationContext.xml
在这里插入图片描述

2.Test
在这里插入图片描述

4.通过抽取jdbc配置文件
利于不同数据库账户不一样,方便在properties里面修改
1.配置jdbc.properties

jdbc.username=root
jdbc.password=123
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb1?serverTimezone=UTC

2.配置applicationContext.xml
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值