2、IOC容器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、pandas是什么?二、使用步骤1.引入库2.读入数据一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pypl
·
该栏目会系统的介绍Spring的知识体系,共分为基础部分、源代码和综合实例等模块,有兴趣的小伙伴可以关注下,如有疑问可以多多评论
文章目录
容器简介
1、容器概述
- :把对象的创建和对象之间的调用过程交给Spring容器,从而降低耦合度
2、底层原理
- 工厂模式
- XML解析
- 反射
3、容器实现方式
BeanFactory
- 概述:IOC容器的基本实现,一般不会在开发中使用
- 特点:加载配置文件时不会创建对象,在获取对象时才创建
ApplicationContext
- 概述: BeanFactory接口的子接口
- 特点:加载配置文件时就会把对象创建完成
- 子类:ClassPathXmlApplicationContext
配置文件方式
1、类实例化方式
- 无参数构造
- 静态工厂创建
- 实例工厂创建
2、bean标签
概述
:在配置文件中配置对象常用属性
属性名称 | 作用 |
---|---|
id | 可以根据id值找到对象 |
name | 与id属性作用一样 |
class | 配置创建对象的类路径 |
scope | 配置创建对象的范围,如single、prototype、request、session、globalSession |
3、属性注入
概述
:在配置文件中配置对象属性注入方式
- 使用set方法
- 使用有参构造
- 使用接口
4、IOC与DI的比较
IOC
:控制反转,把创建对象的过程交给Spring进行配置DI
:依赖注入,向对象注入属性值,必须在IOC的基础之上完成
5、案例
地址类
public class Address {
private String city;
private String district;
public Address(String city, String district) {
this.city = city;
this.district = district;
}
}
用户类
@Setter
public class User {
private String name;
private Address address;
private String[] hobbies;
private List<String> likeMusic;
private Map<String, Float> scores;
private Properties others;
}
测试类
public class TestDemo {
@Test
public void testAddUser() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
final User user = (User) context.getBean("user");
System.out.println(user);
}
}
配置文件
<?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">
<!--有参构造Address对象-->
<bean id="address" class="com.itnear.entity.Address">
<constructor-arg name="city" value="深圳市"></constructor-arg>
<constructor-arg name="district" value="宝安区"></constructor-arg>
</bean>
<!--无参构造User对象-->
<bean id="user" class="com.itnear.entity.User">
<!--字符串-->
<property name="name" value="Near"/>
<!--对象-->
<property name="address" ref="address"/>
<!--数组-->
<property name="hobbies">
<list>
<value>阅读</value>
<value>代码</value>
</list>
</property>
<!--列表-->
<property name="likeMusic">
<list>
<value>天空之城</value>
<value>卡农</value>
</list>
</property>
<!--Map集合-->
<property name="scores">
<map>
<entry key="english" value="100"/>
<entry key="math" value="100"/>
</map>
</property>
<!--属性-->
<property name="others">
<props>
<prop key="loginTime">2020-01-10 02:19:00</prop>
</props>
</property>
</bean>
</beans>
注解方式
1、类相关注解
注解 | 作用 |
---|---|
@Component | 标识类为组件 |
@Controller | 标识WEB层中的类为组件 |
@Service | 标识业务层中的类为组件 |
@Repository | 标识持久层中的类为组件 |
@Scope | 设置对象被创建的类型,如:singleton、prototype |
@ComponentScan | 指定创建容器时要扫描的包 |
2、属性相关注解
注解 | 作用 |
---|---|
@Configuration | 配置文件 |
@Import | 用于导入其他配置类 |
@PropertySource | 用于导入.properties配置文件 |
@Value | 基本数据类型和字符串 |
@Resource | 根据name属性值设置属性值 |
@Autowired | 自动装载 |
3、方法相关注解
注解 | 作用 |
---|---|
@Bean | 把当前方法的返回值做为bean对象,存储spring容器中 |
@Pre | 启动服务器前执行方法 |
@Pos | 启动服务器后执行方法 |
4、案例
用户操作类
@Repository("userDao")
public class UserDao {
public void show(){
System.out.println("UserDao...........");
}
}
用户服务类
@Service("userService")
@Scope(value="prototype") // 创建对象的类型
public class UserService {
// @Resource(name = "userDao"),通过name设置属性
@Autowired
private UserDao userDao;
public void show(){
System.out.println(userDao + ".............");
}
}
测试类
public class TestDemo {
@Test
public void test(){
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserService user = (UserService)context.getBean("userService");
user.show();
}
}
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启注解扫描:到包里面扫描类、方法、属性上面是否有注解 -->
<context:component-scan base-package="cn.itcast"></context:component-scan>
</beans>
整合WEB项目原理
1、描述
- :把加载配置文件和创建对象的过程,在服务器启动时完成
2、相关技术
- ServletContext对象
- ServletContextListents对象
3、操作过程
- :当服务器启动时,为每个项目创建一个ServletContext对象,当监听器监听到该对象被创建时,会加载Spring配置文件,和创建相关对象,并且把创建的对象存储在ServletContext域对象中
更多推荐
已为社区贡献3条内容
所有评论(0)