Spring基础

  1. Bean的实例化
    (1)构造器实例化(最常用)
package com.itheima.instance.constructor;
public class Bean1{}

在Spring的配置文件中,用过class属性指定其对应的实现类
<bean id="bean1" class="com.itheima.instance.constructor.Bean1"></bean>

(2)静态工厂方式是实例化
创建MybeanFactory类

package com.itheima.instance.static_factory;
public class MyBeanFactory{
	pubic static bean1 createBean(){
		return new Bean1();
	}
}

由于这种方式配置Bean后,Spring容器不知道哪个是所需要的工厂方式,所以增加了factory-method属性来告诉Spring容器,其方法名称为createBean。

<bean id="bean1" class="com.itheima.instance.static_factory.MyBeanFactory" factory-method="createBean"/>

(3)实例工厂方式实例化:采用直接创建Bean实例的方式,利用factory-method属性确定使用工厂中的哪个方法。

package com.itheima.instance.factory;
public class MyBeanFactory1{
	//创建Bean实例的方法
	pubic bean1 createBean(){
		return new Bean1();
	}
}
<!-- 配置工厂 -->
<bean id="myBeanFactory1" class="com.itheima.instance.factory.MyBeanFactory1"/>
<!--使用factory-bean属性指向配置的实例工厂,
使用factory-method属性确定使用工厂中的哪个方法-->
<bean id="bean1" factory-bean="myBeanFactory1" factory-method="createBean"/>
  1. Bean的作用域
    (1)singleton(单例):该Bean在Spring容器中将只有一个实例
    (2)prototype(原型):每次通过Spring容器获取prototye定义的Bean时,容器都将创建一个新的Bean原型
    (3)…
  2. Bean的配置方式
    (1)基于XML的配置:设值注入和构造注入,Spring首先会调用Bean的默认构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值。
    设值注入必须满足:
    Bean类提供一个默认的无参构造方法
    注入的属性提供对应额setter方法
public User(String username,String password,List<String> list){
	this.username = username;
	this.password = password;
	this.list = list;
}
public void setUsername(String username){
	this.username = username;
}
public void setPassword(String password){
	this.password = password;
}
pubic voic setList(List<String> list){
	this.list = list;
}
<!--使用构造注入方法装配User实例-->
<bean id = "user1" class = "....">
	<constructor-arg index="0" value="F"/>
	<constructor-arg index="1" value="123"/>
	<constructor-arg index="2">
		<list>
			<value>"constructor-value1"</value>
			<value>"constructor-value2"</value>
		</list>
	</constructor-arg>
</bean>
<!--使用设值注入方式装配User实例-->
<bean id = "user2" class = "....">
	<property name="username" value="laola"/>
	<property name="password" value="123"/>
	<property name="list">
		<list>
			<value>"constructor-value1"</value>
			<value>"constructor-value2"</value>
		</list>
	</property>
</bean>

(2)基于Annotation的装配
Spring中的注解:

  • @Component:描述Spring中的Bean,可以作用于任何层次。
  • @Repository:用于数据访问层(DAO层)的类标识
  • @Controller:通常作用在控制层(Spring MVC的Controller)
  • @Service:通常作用在业务层(Service层)
  • @Autowired:用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动配置,默认按照Bean的类型进行装配。
  • @Resource:与@Autowired一样,默认按照Bean的实例名称进行装配。有两个重用属性:name和type。
@Repository("userDao")
public class UserDaoImp UserDao{
	
}
@Service("userService")
public class UserServiceImpl implements UserService{
	@Resource(name="userDao")//相当于在配置文件中的<property name="userDao" ref="userDao"/>
	private UserDao userDao:
}
<!--配置文件中编写基于Annotation装配的代码-->
<!--使用context命名空间,在配置文件中开启相应的注解处理器-->
<context:annotation-config/>
<!--分别定义Bean的实例-->
<bean id="userDao" class="........UserDaoImp"/>
<bean id="userService' class=".....UserServiceImpl"/>

上述Spring配置文件中的注解方式仍需要在Spring配置文件中一一配置相应的Bean
为此Spring注解提供了一种高效的注解配置方式(对包路径下的所有Bean文件进行扫描)

<!--使用context命名空间,通知Spring扫描指定包下所有Bean类,进行注解解析-->
<context:component-scan base-package="Bean所在包路径"/>

(3)自动装配:在元素中包含一个autowire属性,设置autowire的属性值来自动装配Bean。

<bean id="userDao" class=".......UserServiceImpl" autowire="byName"/>

设置了 autowire="byName"后,Spring会自动寻找userService Bean中的属性,并将其属性名称与配置文件中定义的Bean做匹配。Spring会自动的将id为userDao的Bean装配到id为userService的Bean中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值