Spring 个人总结

配置文件

Bean的配置
基本语法

<bean id="" class="" scope="">

scope :设置对象的作用范围:
1.singleton 默认值 创建是单例 每次都是同一个对象
2.prototype 每次获取bean对象都会创建一个新的对象
3.request web项目中之只在request中有效
4.session 在web项目中 该对象在session中有效
5.globalsession 在web项目中 该对象只在portlet环境中有效

SSM中几个名词

IOC 控制反转
DI 依赖注入
AOP 面对切面编程
ORM 对象关系映射

依赖注入

分为构造注入和属性注入

构造注入需要在bean标签中使用constructor-arg标签来配置构造函数中的每一个参数。

<bean id="userBean" class="com.xjy.beans.UserBean"/>
<constructor-arg name="" value="" index="" type="" ref=""></constructor-arg>
	<!-- 根据下标设置参数
		<constructor-arg index="0" value="小宝"/>
		<constructor-arg index="1" value="18"/> -->
		
		<!-- 根据名字设置参数
		<constructor-arg name="name" value="小宝"/>
		<constructor-arg name="age" value="18"/> -->
		
		<!-- 指定参数类型 -->
		<constructor-arg name="name" value="小宝" type="java.lang.String"/>
		<constructor-arg name="age" value="18" type="int"/>
		<constructor-arg name="birthDate" ref="now"/>

</beans>

name:参数名
value 参数值
index 下标
type 参数类型
ref 引用其他bean对象

属性注入

<bean id="userBean" class="com.xjy.beans.UserBean">
		<property name="name" value="大宝"/>
		<property name="age" value="18"/>
		<property name="birthDate" ref="now"/>
	</bean>

name:属性名。注意:Spring是根据setter方法来判断属性的。
value:属性值。
ref:引用其他bean对象。

注意 因为执行属性注入前 Spring容器会调用Bean类无参构造函数 然后把属性注入到对象中 所以需要给Bean类提供一个无参数的构造函数

集合注入

<property name="myStrs">
			<array>
				<value>AAA</value>
				<value>BBB</value>
				<value>CCC</value>
			</array>
		</property>
		<!-- 注入set集合 -->
		<property name="mySet">
			<list>
				<value>AAA</value>
				<value>BBB</value>
				<value>CCC</value>
			</list>
		</property>
		<!-- 注入Map集合 -->
		<property name="myMap">
			<props>
				<prop key="keyA">aaa</prop>
				<prop key="keyB">bbb</prop>
			</props>
		</property>
		<!-- 注入properties数据 -->
		<property name="myProps">
			<map>
				<entry key="keyA" value="aaa"/>
				<entry key="keyB" value="bbb"/>
			</map>
		</property>

测试获取B额按对象 (配置文件的获取方法)

ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
		UserBean userBean = (UserBean) ac.getBean("userBean");

使用注解

在配置文件中添加包扫描的

<context:component-scan base-package="com.xjy.beans"/>

常用的注解

@Component @Controller @Service @Repository
这4个都是让资源交给Spring管理

@Autowired 变量成员使用该注解 spring容器就会扫描 如果找到创建这个类的对象就会注入到成员属性中但是有可能会出现歧义 如果存在两个或两个以上的子类型 主要给他们指定别名

@Service("userService")
public class UserService {
	//根据属性名查找Bean对象,并把该对象设置到该属性中 ()
	@Autowired
    
    @Oualifier"StudentDaoImpl"private IDao dao;
	
	public UserService() {
		System.out.println("创建UserService对象...");
	}
	
	public void addUser() {
		dao.add();
	}
	
}

@Repository
public class StudentDaoImpl implements IDao {
	
	public StudentDaoImpl() {
		System.out.println("创建StdentDaoImpl对象...");
	}
[添加链接描述](https://img-blog.csdnimg.cn/20190812235502649.png)
	public void add() {
		System.out.println("执行StdentDaoImpl对象的add方法...");
	}
	
}


IDao 下有2个子类型会出现异常

解决办法:
1)改为子类型的名字;
2)使用@Qualifier指定注入Bean对象的名字;(常常和@Autowire一起使用)




@Resource 是@Autowire和@Qualifier 的结合
在这里插入图片描述
@Value在这里插入图片描述

@Scope
设置Bean的作用域。Bean的作用范围有:singleton、prototype、request、session、globalsession。
在这里插入图片描述

@PostConstruct:指定初始化方法; 获取bean对象调构造方法后会会调用

@PreDestory:指定销毁方法;
在这里插入图片描述

spring零配置

完全脱离xml
就是创建一个类 让他作为配置类

@Configuration
指定spring容器从这个类读取配置信息

@ComponentScan

指定spring扫描的包

属性: basePackages:指定要扫描的包。

在这里插入图片描述
使用零注解后测试类应该这样写
在这里插入图片描述

@propertySource
加载propertsource文件中的配置

value[]:指定properties文件的位置。如果在src目录下,那么就需要加上classpath前缀。

  • 使用步骤:

首先,在src目录下创建一个info.properties配置文件。该文件保存Bean对象的属性值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值