spring 框架(一)

目录

一、spring简介

二、spring入门

 三、spring配置文件

3.1.bean标签的基本配置(applicationContext.xml)

3.2Bean(scope:指对象的作用范围)标签范围配置 

3.3 Bean生命周期配置

3.4 Bean实例化三种方式

3.5 Bean的依赖注入入门

3.6 Bean的依赖注入的数据类型

3.7 引入其他配置文件(分模块开发)

4.1 ApplicationContext的继承体系

4.2 getBean()方法使用


一、spring简介

1.Spring是什么

Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。

提供了展现层 SpringMVC 和持久层 Spring JDBCTemplate 以及业务层事务管理等众多的企业级应用技术 ,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。

二、spring入门

1 导入 Spring 开发的基本包坐标

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.16</version><scope>compile</scope>
</dependency>

2 编写 Dao 接口和实现类

dao接口

public interface userDao {void save();
}

 dao实现类

public class userDaoImpl implements userDao {@Overridepublic void save() {System.out.println("  你好");}
}

3 创建 Spring 核心配置文件


4 在 Spring 配置文件中配置 UserDaoImpl

<?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="com.study.dao.impl.userDaoImpl"></bean></beans>

5 使用 Spring 的 API 获得 Bean 实例

public class DaoService{public static viod main(String[] a){ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao u=(userDao)app.getBean("userDao");
u.save();
}}

 三、spring配置文件

3.1.bean标签的基本配置(applicationContext.xml)

用于配置对象交由Spring 来创建。 默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。

基本属性:

  1.  id:      Bean实例在Spring容器中的唯一标识
  2. class: Bean的全限定名称

3.2Bean(scope:指对象的作用范围)标签范围配置 

取值范围

说明

Bean的实例化个数

Bean的实例化时机:

Bean的生命周期:

singleton

默认值,单例的

1个

当Spring核心文件被加载时,实例化配置的Bean实例

 对象创建:当应用加载,创建容器时,对象就被创建了

 对象运行:只要容器在,对象一直活着
 对象销毁:当应用卸载,销毁容器时,对象就被销毁了

prototype

多例的多个

当调用getBean()方法时实例化Bean

 对象创建:当使用对象时,创建新的对象实例
 对象运行:只要对象在使用中,就一直活着
 对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了

request

WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中

session

WEB 项目中,Spring 创建一个 Bean

的对象,将对象存入到 session 域中

global session

WEB 项目中,应用在 Portlet 环境,如果没有 Portlet 环境那么globalSession 相当 于 session

3.3 Bean生命周期配置

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

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

3.4 Bean实例化三种方式

 无参构造方法实例化

之前演示的案例都是无参构造

 工厂静态方法实例化

 <bean id="UserDao" class="com.study.factory.factoryUserDao" factory-method="getUserDao" ></bean>

 工厂实例方法实例化

 3.5 Bean的依赖注入入门

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

 构造方法

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.itheima.service.impl.UserServiceImpl">

<constructor-arg name="userDao" ref="userDao"></constructor-arg> </bean>

 set方法

public class userServiceImpl implements userService {private userDao userDao;public void setUserDao(userDao userDao) {this.userDao = userDao;}@Overridepublic void inke() {userDao.save();}
}

<?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="com.study.dao.impl.userDaoImpl" ></bean><bean id="Service" class="com.study.Service.impl.userServiceImpl"><property name="userDao" ref="UserDao"></property></bean></beans>

 如果觉得上面步骤太麻烦,也可以使用p标签

P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中

xmlns:p="http://www.springframework.org/schema/p"

<bean id="userService" class="com.itheima.service.impl.UserServiceImpl" p:userDao- ref="userDao"/>

3.6 Bean的依赖注入的数据类型

 普通数据类型

public class UserDaoImpl implements UserDao { private String company;
private int age;
public void setCompany(String company) {
this.company = company; }
public void setAge(int age) { this.age = age;
}
public void save() {
System.out.println(company+"==="+age);
System.out.println("UserDao save method running...."); }
}
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"><property name="company" value="华华"></property><property name="age" value="15"></property>
</bean>

 引用数据类型

 集合数据类型

public class UserDaoImpl implements UserDao {

private List<String> strList;
public void setStrList(List<String> strList) {

        this.strList = strList; }

public void save() {
        System.out.println(strList); System.out.println("UserDao save method running....");

} }

<bean id="userDao" class="com.study.dao.impl.UserDaoImpl"><property name="strList"><list> <value>aaa</value> <value>bbb</value><value>ccc</value></list> </property>
</bean>

集合数据类型map注入

public class UserDaoImpl implements UserDao {private Map<String,User> userMap;public void setUserMap(Map<String, User> userMap) {this.userMap = userMap; }public void save() {System.out.println(userMap); System.out.println("UserDao save method running....");}}

<bean id="u1" class="com.study.domain.User"/>
<bean id="u2" class="com.study.domain.User"/>
<bean id="userDao" class="com.study.dao.impl.UserDaoImpl">
<property name="userMap"> <map><entry key="user1" value-ref="u1"/><entry key="user2" value-ref="u2"/></map>
</property></bean>

集合数据类型(Properties)的注入

public class UserDaoImpl implements UserDao {private Properties properties;public void setProperties(Properties properties) {this.properties = properties; }public void save() {System.out.println(properties); System.out.println("UserDao save method running....");}}
<bean id="userDao" 
class="com.itheima.dao.impl.UserDaoImpl"><property name="properties">
<props><prop key="p1">aaa</prop> <prop key="p2">bbb</prop> <prop key="p3">ccc</prop>
</props> 
</property>
</bean>

3.7 引入其他配置文件(分模块开发)

实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他 配置文件中,而在Spring主配置文件通过import标签进行加载

<import resource="applicationContext-xxx.xml"/>

<bean>标签id属性:在容器中Bean实例的唯一标识,不允 许重复class属性:要实例化的Bean的全限定名,全包名scope属性:Bean的作用范围,常用是Singleton(默认)和prototype <property>标签:属性注入name属性:属性名称 value属性:注入的普通属性值 ref属性:注入的对象引用值 <list>标签<map>标签<properties>标签<constructor-arg>标签
<import>标签:导入其他的Spring的分文件

4.1 ApplicationContext的继承体系

1)ClassPathXmlApplicationContext

它是从类的根路径下加载配置文件 推荐使用这种

2)FileSystemXmlApplicationContext

它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。

3)AnnotationConfigApplicationContext

当使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。

4.3 getBean()方法使用

public Object getBean(String name) throws BeansException { assertBeanFactoryActive();
return getBeanFactory().getBean(name);

}

public <T> T getBean(Class<T> requiredType) throws BeansException { assertBeanFactoryActive();
return getBeanFactory().getBean(requiredType);

}

其中,当参数的数据类型是字符串时,表示根据Bean的id从容器中获得Bean实例,返回是Object,需要强转。 当参数的数据类型是Class类型时,表示根据类型从容器中匹配Bean实例,当容器中相同类型的Bean有多个时, 则此方法会报错。

也就是说,如果Bean 只有一个,可以使用第二个(不需要强转),如果存在一个bean但是多次分类别使用使用第一个,用id区分,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cdr添加节点快捷键_CDR快捷键分享,需要的赶紧收藏!

点击上方蓝字&#xff0c;关注我们哦&#xff01;&#xff01;有粉丝在后台留言说&#xff0c;希望我分享一下CDR的快捷键&#xff0c;今天我整理了一下快捷键。来源&#xff1a;内容整理自网络&#xff0c;仅供学习交流一工具箱I 绘制曲线&#xff0c;并对笔划使用预置、画刷、…

spring 框架(二)

目录 一、Spring配置数据源 1.1 数据源(连接池)的作用 1.2数据源的使用 1.3基本实现 1.4.抽取配置文件&#xff0c;降低耦合性(druid) 1.4.1抽取jdbc.properties文件 1.4.2设置数据源的基本连接数据&#xff0c;通过applicationContext.xml设置数据库参数applicationCon…

matplotlib 对称图_Python 绘图,我只用 Matplotlib

散点图散点图显示两组数据的值&#xff0c;如图1-1所示。每个点的坐标位置由变量的值决定&#xff0c;并由一组不连接的点完成&#xff0c;用于观察两种变量的相关性。例如&#xff0c;身高—体重、温度—维度。图1-1 散点图示例使用Matplotlib的scatter()函数绘制散点图&#…

spring框架(三)mvc

目录 1.1准备测试数据 1.2 ApplicationContext应用上下文获取方式 1.2.1添加listener包 1.2.2解耦配置文件 1.2.3 继续提取ContextLoaderListener.java中参数app 1.2.4 Spring提供获取应用上下文的工具 二、SpringMVC 2.1概述 2.2数据准备 2.3添加success.jsp页面 2.4 …

python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法

字符串是字符序列。Python中内置的string类代表基于Unicode国际字符集的字符串。除了Python中常见的操作外,字符串还有一些专属于它们的附加方法。下图显示了所有这些可用的方法: Python中的内置字符串函数 在本文中,我们将学习一些最常用的方法。这里需要注意的重要一点是,…

spring (四) SpringMVC的请求和响应

目录 前言 一、SpringMVC的数据响应 1.1 SpringMVC的数据响应方式 1.1.1页面跳转 直接返回字符串 ​ 1.1.2通过ModelAndView对象返回 1.2 回写数据 1.2.1直接返回字符串 1.2.2返回对象或集合 二、SpringMVC获得请求数据 2.1 获得请求参数 2.2 获得基本类型…

拼接路径优雅方式_中年女人最好少穿马丁靴,简约的“无痕靴”更适合你,优雅高级...

女人在到了中年的时候&#xff0c;经过很多世事的沉淀&#xff0c;气质也会变得更加的淡定与从容。在穿搭上面&#xff0c;也不会喜欢像小姑娘那般的去盲目地追求潮流&#xff0c;跟风一些并不适合自己穿搭的服装&#xff0c;强行的装嫩的话&#xff0c;也会显得有些尴尬。中年…

spring框架(五)之JdbcTemplate基本使用

数据准备 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

spring框架(六)之拦截器

一. SpringMVC拦截器 1.1 拦截器(interceptor)的作用 Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter&#xff0c;用于对处理器进行预处理和后处理。 将拦截器按一定的顺序联结成一条链&#xff0c;这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方 法或…

取最大值_查找数组中最大值的5种方法!(动图演示)

我们在一些特定场景下&#xff0c;例如查询公司员工的最高薪资&#xff0c;以及班级的最高成绩又或者是面试中都会遇到查找最大值的问题&#xff0c;所以本文我们就来列举一下查询数组中最大值的 5 种方法。首先我们来看最原始也是最“笨”的实现方法&#xff1a;循环对比和递归…

文件跟随_如何在苹果Mac上将文件合并为PDF?推荐收藏

当有不同页面合并到一个文档中时&#xff0c;可能需要合并PDF文件&#xff0c;那么如何在苹果Mac电脑上将文件合并为PDF&#xff1f;其实您可以在电脑上直接合并&#xff0c;操作非常简单&#xff0c;当然如果您有其他要求&#xff0c;比如说多个pdf文件的合并&#xff0c;需要…

linux翻页查看命令_在 Linux 命令行使用 more 查看文本文件

文本文件和 Linux 一直是携手并进的。或者说看起来如此。那你又是依靠哪些让你使用起来很舒服的工具来查看这些文本文件的呢&#xff1f;-- Scott NesbittLinux 下有很多实用工具可以让你在终端界面查看文本文件。其中一个就是 more 。more 跟我之前另一篇文章里写到的工具 ——…