Spring6

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

介绍Spring6 IOC相关内容,没有AOP,后面状态好会补的

提示:以下是本篇文章正文内容,下面案例可供参考

一、IOC

1.创建对象

管理所有Java对象的实例化和初始化,控制对象与对象间的依赖关系。
通过BeanFactory工厂+反射 创建对象

//获取class对象
class clazz=class.forName("com.atguigu.spring6.User");
//调用方法创建对象
User user=(User) clazz.getDeclaredConstructor().newInstance();
Sysyem.out.println(user);

2.依赖注入(IOC的具体实现)

在创建对象的过程的中,将对象依赖属性注入值(可以是基础属性,也可以是个对象)
使用子类 ApllicationContext

二、基于xml管理bean

1.获取bean的三种方式

psvm{ApllicationContext context=new ClasspathxmlApllikcationContext("bean.xml");

}
//根据id获取bean
User user1=(User) context.getBean("user");
sout("根据id获取bean:"+user1);
//根据类型获取bean(要求类型跟对象唯一)
User user2=context.getBean(User.class);
sout("2根据类型获取bean:"+user2)
//根据id和类型获取bean
User user3=context.getBean("user",User.class);
sout("3根据id和类型获取bean:"+user3)

2.类型唯一

如果接口有实现类,可以通过接口类型获取bean吗?
可以,如果bean唯一(多态)
如果一个接口有多个实现类,可以通过接口类型获取bean吗?
不行,因为bean不唯一

三、注入

1.通过set方法注入(name是set方法方法名第一个字母小写)

<bean id=... class=...>
	<property name="bname" value ="前端开发"></property>
	<property name="author" value="尚硅谷"></propertry>

2.通过构造器注入

<bean id=... class=...>
	<constructor-arg name="bname" value ="前端开发"></constructor-arg>
	<constructor-arg name="author" value="尚硅谷"></constructor-arg>

3.特殊值处理

3.1字面量赋值(无特殊含义)

3.2null

<property name="bname">
	<null/>
</property>

3.3xml 实体(通过转义解决)

<property name="bname" value="&lt;&gt;"></property>

3.4 CDATA节(不想通过转义解决)

<property name="bname">
	<value> <![CDATA[a<b]]></value>
</property>

4.引入外部bean

<bean id="dept" ···></bean>
<bean id="emp" class=···>
	<property name="dept" ref="dept"></property>
</bean>	

5.内部bean

<bean id="emp2" class=···>
	<property name=··· value=···></property>
	<property name="dept" >
		<bean id="dept2" class=···>
			</property name="dname" value="财务部"></property>
		</bean>
	</property>
</bean>	

6.级联复制(外部bean+调用)

<bean id="dept3" class=···></bean>
<bean id="emp3" class=···>
	<property name="dept" ref="dept3"></property>
	<property name="dept3.dname" value="测试部"></property>
</bean>	

7.数组类型注入

<property name="loves">
	<array>
		<value>吃饭</value>
		<value>睡觉</value>
		<value>敲代码</value>
	</array>
</property>

8.List集合注入

<property name="empList">
	<list>
		<ref bean="···"></ref>  <!--id-->
		<ref bean="···"></ref>
	</list>
</property>

9.Map集合注入

<map>
    <entry>
     	<key>
     		<value>10010</value>
     	</key>
     	<ref bean="···"></ref>
    </entry >
</map>

10.引用集合类型

<util:list id="productServiceList">
    <ref bean="clothingProductService"/>
    <ref bean="electronicsProductService"/>
</util:list>
<util:map id="categoryServiceMap">
    <entry key="clothing" value-ref="clothingCategoryService" />
    <entry key="electronics" value-ref="electronicsCategoryService" />
</util:map>

11.p命名空间注入(改依赖 xmlns:p=···)

<bean id=··· class=···
	p:sid="100" p:sname="" ···/>

12.引入外部属性文件

<context:property-placeholder location="···">

四、bean的生命周期

1.bean对象的创建(调用无参构造)
2.给bean对象设置相关属性(set方法)
3.bean对象的初始化
4.bean对象创建完成,可以使用
5.bean 对象销毁

五、FactoryBean

	implements FactoryBean 方法,不实现FactoryBean对象,而是实现getObject()方法得到的对象

六、自动装配

<bean ···· autowire="byType">
<bean ···· autowire="byName"> <!--Service属性名要等与bean id名-->

七、开启组件扫描

<context:component-scan base-package="···"></context>

八、注解

@Component=@service=@Repository=@Controller 在springMVC中,Controller会将@RequestMapping注解封装成RequestMappingInfo

@Resource 根据名称进行匹配

全注解开发
@ComponentScan(“要扫描的类”)

@Autoweired
@Qualifier 根据名称进行注入

总结

没有注解的相关内容,而且aop也没听,大概是p56-p57的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值