前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring框架入门笔记

Spring框架入门笔记

作者头像
咕咕星
发布2020-12-15 11:28:07
3040
发布2020-12-15 11:28:07
举报
文章被收录于专栏:咕咕星

1、什么是Spring?

Spring是一款轻量级开源框架

IoC(Inverse Of Control:反转控制)通过配置的方式,将对象的管理控制权交给spring容器,spring得到具体的包路径,类路径通过反射的方式,创建对象。

AOP(Aspect Oriented Programming:面向切面编程),运行期通过动态代理方式,在方法的前后加入相应的通知(日志,权限等)

Spring的体系机构

2、Spring的配置文件

Bean标签基本属性配置:

id:Bean实例在Spring容器中的唯一标识

class:Bean的全限定名称

scope:指对象的作用范围

  • singleton为单例:容器只有一个对象,当Spring核心文件被加载时,实例化配置的Bean实例,
  • prototype为多例,容器有多个对象,当调用getBean()方法时实例化Bean,当对象长时间不使用时,被GC垃圾回收器回收

init-method:指定类中的初始化方法名称

destroy-method:指定类中销毁方法名称

3、Spring入门

开发步骤

①导入 Spring 开发的基本包坐标
代码语言:javascript
复制
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.3.RELEASE</version>
        </dependency>
    </dependencies>
②编写 Dao 接口和实现类
代码语言:javascript
复制
public interface UserDao {  
    public void save();
}

public class UserDaoImpl implements UserDao {
    public void save() {
        System.out.println("save running....");
    }
}
③创建 Spring 核心配置文件

在类路径下(resources)创建applicationContext.xml配置文件

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>
④在 Spring 配置文件中配置 UserDaoImpl
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="userDao" class="cn.guixinchn.dao.impl.UserDaoImpl"></bean>
</beans>
⑤使用 Spring 的 API 获得 Bean 实例
代码语言:javascript
复制
public class test {
    @Test
    public void test1(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.save();
    }
}

4、Bean的依赖注入配置

依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现

①set方法注入

​ 创建UserServer接口和UserServerImpl实现类

通过Spring配置文件的方式

代码语言:javascript
复制
public interface UserServer {
    public void save();
}

public class UserServerImpl implements UserServer {

    public void save() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.save();
    }
}
代码语言:javascript
复制
<bean id="userServer" class="cn.guixinchn.server.impl.UserServerImpl"></bean>

通过配置set方式

代码语言:javascript
复制
public class UserServerImpl implements UserServer {

    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save() {
        userDao.save();
    }
}
代码语言:javascript
复制
<bean id="userServer" class="cn.guixinchn.server.impl.UserServerImpl">
    <property name="userDao" ref="userDao"></property>
</bean>

②构造方法注入

代码语言:javascript
复制
public class UserServerImpl implements UserServer {

    private UserDao userDao;

    public UserServerImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save() {
        userDao.save();
    }
}
代码语言:javascript
复制
<bean id="userServer" class="cn.guixinchn.server.impl.UserServerImpl">
    <constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
引用数据类型例子

​ 如上

普通数据类型例子
代码语言:javascript
复制
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">
    <property name="name" value="张三"></property>
    <property name="age" value="18"></property>
</bean>
集合数据类型例子
代码语言:javascript
复制
<property name="strList">
    <list>
        <value>aaa</value>
        <value>bbb</value>
        <value>ccc</value>
    </list>
</property>
代码语言:javascript
复制
<property name="userMap">
    <map>
        <entry key="a" value-ref="aaa"/>
        <entry key="b" value-ref="bbb"/>
    </map>
</property>
代码语言:javascript
复制
<property name="properties">
    <props>
        <prop key="a">aaa</prop>
        <prop key="b">bbb</prop>
        <prop key="c">ccc</prop>
    </props>
</property>

5、分模块开发

可以把配置文件分出来,在Spring主配置文件通过import标签进行加载

代码语言:javascript
复制
<import resource="applicationContext-xxx.xml"/>

6、Srping配置数据源

1、导入数据库连接需要的依赖坐标
代码语言:javascript
复制
<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
</dependency>
2、创建jdbc.properties连接参数

在resources目录下新建一个jdbc.properties文件

代码语言:javascript
复制
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=123456
3、主配置文件抽jdbc配置文件

applicationContext.xml加载jdbc.properties配置文件获得连接信息。

首先,需要引入context命名空间和约束路径:

  • 命名空间:xmlns:context="http://www.springframework.org/schema/context"
  • 约束路径:http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
代码语言:javascript
复制
<!--Spring容器加载properties文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="{jdbc.driver}"></property>
    <property name="jdbcUrl" value="{jdbc.url}"></property>
    <property name="user" value="{jdbc.username}"></property>
    <property name="password" value="{jdbc.password}"></property>
</bean>
4、测试
代码语言:javascript
复制
    @Test
    public void test3() throws SQLException {
        //获取配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //拿到数据源
        DataSource dataSource = (DataSource) applicationContext.getBean("dataSource");
        //获得连接对象
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

7、Srping相关API

ApplicationContext的继承体系

applicationContext:接口类型,代表应用上下文,可以通过其实例获得 Spring 容器中的 Bean 对象

ApplicationContext的实现类
  1. ClassPathXmlApplicationContext:通过类的根路径下加载配置文件
  2. FileSystemXmlApplicationContext:从磁盘路径上加载配置文件
  3. AnnotationConfigApplicationContext:使用注解配置容器对象时,此类来创建 spring 容器读取注解
getBean()方法使用

当参数的数据类型是字符串时,表示根据Bean的id从容器中获得Bean实例,返回是Object,需要强转。

当参数的数据类型是Class类型时,表示根据类型从容器中匹配Bean实例,当容器中相同类型的Bean有多个时,则此方法会报错

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是Spring?
    • Spring的体系机构
    • 2、Spring的配置文件
    • 3、Spring入门
      • 开发步骤
        • 引用数据类型例子
        • 普通数据类型例子
        • 集合数据类型例子
        • 1、导入数据库连接需要的依赖坐标
        • 2、创建jdbc.properties连接参数
        • 3、主配置文件抽jdbc配置文件
        • 4、测试
        • ApplicationContext的继承体系
        • ApplicationContext的实现类
        • getBean()方法使用
    • 4、Bean的依赖注入配置
    • 5、分模块开发
    • 6、Srping配置数据源
    • 7、Srping相关API
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档