标签:文件中 cti prot col request key nbsp 函数 入门
1、spring基于xml的IOC环境的搭建和入门
添加pom文件jar包
<!--spring核心jar包-->
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency>
spring框架beans配置文件
spring创建bean对象的三种方式
1、使用默认构造函数
2、使用普通工厂类的,或其他类的某个方法创建对象,并存入spring容器
3、使用某个类的静态方法创建对象,并存入spring容器中
4、bean对象的生命周期
单例对象:
容器创建bean对象创建
容器还在,对象活着
容器销毁,对象销毁
多例对象:
当我们使用对象是对象创建
对象只要在使用过程中就一直活着
当对象长时间不用时,有java垃圾回收机制回收而死亡
spring的依赖注入
能注入的数据有三类
1、基本类型和String类型
2、其他bean类型(在配置文件中或注解配置过得bean)
3、复杂类型和集合类型
注入的方式有三种
1、使用构造函数注入
2、使用set方法注入
3、使用注解<?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">
<!--把对象的创建交给spring来管理-->
<!--使用默认构造函数创建bean对象,没有默认函数则无法创建对象-->
<bean id="userDao" class="cn.kgc.dao.impl.userDaoImpl"></bean>
<bean id="userService" class="cn.kgc.service.impl.UserServiceImpl"></bean>
<!--使用普通工厂类的,或其他类的某个方法创建对象,并存入spring容器-->
<!--创建工程类对象,并交由Spring管理-->
<bean id="instanceFactory" class="cn.kgc.util.InstanceFactory"></bean>
<!--通过工厂类InstanceFactory的getUserService的方法获取UserService的对象-->
<bean id="userService" factory-bean="instanceFactory" factory-method="getUserService"></bean>
<!--通过其类的静态方法创建对象,并交由Spring管理-->
<bean id="userService" class="cn.kgc.util.InstanceFactory" factory-method="getUserService"></bean>
<!--bean的作用范围调整
bean便签的scope属性的作用范围
singleton:单例的(默认)
prototype:多例的
request:作用域web应用的请求范围
session:作用域web应用的一次会话范围
global-session:作用于集群环境的会话范围(全局会话范围,当不是集群环境时,他就是session,用于负载均衡)
-->
<bean id="userService" class="cn.kgc.service.UserService" scope="prototype"></bean>
<!--使用构造函数的方法进行依赖注入
使用标签:constructor-arg
标签出现的位置bean标签的内部
标签的属性:
type:用于指定注入数据的数据类型,一般不用
index:用于指定注入数据在构造函数中指定的索引位置的参数赋值。索引从0开始。(一般不用)
name:用于指定给构造函数中指定名称的参数赋值,(常用)
value:用于提供基本类型或String类型的数据
ref:用于指定其他的bean类型数据,指的是spring容器中出现过的bean对象
优势:在获取bean时注入数据是必须操作,否则对象无法创建
弊端:改变了bean对象的实例化方式,使我们在创建对象时。如果用不到这些数据也必须提供(一般不用)
-->
<bean id="userService" class="cn.kgc.service.UserService">
<constructor-arg name="name" value="刘高阳"></constructor-arg>
<constructor-arg name="sex" value="18"></constructor-arg>
<constructor-arg name="birthday" ref="new"></constructor-arg>
</bean>
<bean id="new" class="java.util.Date"></bean>
<!--使用set方法注入(常用)
涉及的标签 property
出现在bean标签内部
标签属性:
name:用于指定调用时的set方法名
value:用于提供基本类型和String类型的数据
ref:用于指定spring容器中出现过的bean类型
-->
<bean id="userService" class="cn.kgc.service.UserService">
<property name="name" value="刘高阳"></property>
<property name="sex" value="18"></property>
<property name="birthday" ref="new"></property>
</bean>
<!--集合复杂类型注入
-->
<bean id="userService" class="cn.kgc.service.UserService">
list结构
<property name="myStrs">
<array>
<value>AAA</value>
<value>BBB</value>
</array>
</property>
list结构
<property name="myList">
<list>
<value>AAA</value>
<value>BBB</value>
</list>
</property>
set结构
<property name="mySet">
<set>
<value>AAA</value>
<value>BBB</value>
</set>
</property>
map结构
<property name="myMap">
<map>
<entry key="testA" value="aaa">
<value>AAA</value>
</entry>
<entry key="testB" value="bbb">
<value>BBB</value>
</entry>
</map>
</property>
map结构
<property name="myMap">
<props>
<prop key="testC">CCC</prop>
</props>
</property>
</bean>
</beans>
ApplicationContext三个常用实现类
ClassPathXmlApplicationContext:他可以加载类路径下的配置文件要求配置文件必须在类路径下,不在的话加载不了
FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有访问权限)
AnnotationConfigApplicationContext:他用于读取注解创建容器的
核心容器的两个接口引发的问题
ApplicationContext:在构建容器时,采用立即加载的方式。也就是说只要加载配置文件,立即创建配置文件中配置的对象。在单例情况下使用
BeansFactiory: 在构建核心容器时,创建对象才用的策略是延迟加载。也就是说什么时候用什么时候加载。在多例情况下使用
package cn.kgc; import cn.kgc.dao.UserDao; import cn.kgc.service.UserService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Test { public static void main(String[] args) { // 获取容器对象,并读取配置文件,用于创建配置的对象
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml"); ApplicationContext applicationContext1=new FileSystemXmlApplicationContext("E:\\Eclipse工作空间\\Spring\\Spring_day01\\src\\main\\resources\\bean.xml"); //根据id获取Bean对象 UserDao userDao = (UserDao) applicationContext.getBean("userDao"); UserService userService = (UserService) applicationContext1.getBean("userService"); System.out.println(userDao); System.out.println(userService); } }
spring基于注解的IOC环境搭建
注解:
@Component
作用:将当前类对象存入spring容器中,标注在当前类上
属性:value 用于指定bean的id,不写时默认为当前类名并把首字母改小写
@Controller用于controller层
@Service用于service层
@Repositrory用于dao层
以上三个注解的作用域@Component作用一样
@Autowired
作用:自动按类型注入。只要spring容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功
出现的位置:可以是变量上也可以是方法上
@Qualifier
作用:按照类型注入的基础之上再按照名称注入。他在给类名称注入是不能单独使用必须和@Autowired配合使用。但在给方法参数注入时可以使用
属性:value 用于指定注入bean的id
@Resource
作用:通过name属性指定唯一的bean的id注入
属性:name 指定bean的id
@Value
作用:用于注入基本数据类型和String类型的数据
属性:value。用于指定数据的值。他可以使用spring的EL表达式($(表达式))
@Scope
作用:用于指定bean的作用范围,标注在类上
属性:value:指定范围的取值。常用取值:singleton(单例) prototype(多例)不写时默认单例
@PreDestroy
作用:用于指定销毁方法,标注在方法上
@PostConstruct
作用:用于指定初始化方法,标注在方法上
bean文件
<?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"> <!--告知spring容器创建对象时要扫描的包,用于创建对象并放入spring容器--> <context:component-scan base-package="cn.kgc"></context:component-scan> </beans>
标签:文件中 cti prot col request key nbsp 函数 入门
原文地址:https://www.cnblogs.com/liugaoyanging/p/11567957.html