Spring学习笔记(二) --- Spring的Bean的管理

1、Spring的Bean的管理XML的方式

Ⅰ、Spring的Bean的普通属性注入

【构造方法的方式注入普通属性】

<!-- 第一种:构造方法的方式 -->
	<bean id="car" class="spring.demo4.Car">
		<constructor-arg name="name" value="保时捷"/>
		<constructor-arg name="price" value="1000000"/>
	</bean>

【set方法的方式注入普通属性】

<!-- 第二种:set方法的方式 -->
	<bean id="car2" class="spring.demo4.Car2">
		<property name="name" value="奇瑞QQ"/>
		<property name="price" value="40000"/>
	</bean>

Ⅱ、Spring的属性注入:对象类型的注入

<!-- 注入对象类型的属性 -->
	<bean id="person" class="spring.demo4.Person">
		<property name="name" value="会希"/>
		<!-- ref属性:引用另一个bean的id或name -->
		<property name="car2" ref="car2"/>
	</bean>

Ⅲ、名称空间p的属性注入的方式:Spring2.x版本后提供的方式

第一步:引入p名称空间

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p"
    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">

第二步:使用p名称空间.

    * 普通属性:    		p:属性名称=””
    * 对象类型属性:	p:属性名称-ref=””


<!-- p名称空间的属性注入的方式 -->

<bean id="car2" class="spring.demo4.Car2" p:name="宝马7" p:price="1200000"/>

<bean id="person" class="spring.demo4.Person" p:name="思聪" p:car2-ref="car2"/>

Ⅳ、SpEL的方式的属性注入:Spring3.x版本后提供的方式

SpEL:Spring Expression Language.

语法:#{ SpEL }

	<!-- SpEL的注入的方式 -->

	<bean id="car2" class="spring.demo4.Car2">
		<property name="name" value="#{'奔驰'}"/>
		<property name="price" value="#{800000}"/>
	</bean>

    <bean id="person" class="spring.demo4.Person">
    	<property name="name" value="#{'冠希'}"/>
    	<property name="car2" value="#{car2}"/>
    </bean>

	<bean id="carInfo" class="spring.demo4.CarInfo"></bean>
	
 	引用了另一个类的属性
	<bean id="car2" class="spring.demo4.Car2">
        <!--<property name="name" value="#{'奔驰'}"/> -->
		<property name="name" value="#{carInfo.carName}"/>
		<property name="price" value="#{carInfo.calculatePrice()}"/>
	</bean>

Ⅴ、注入复杂类型

<!-- Spring的复杂类型的注入===================== -->
	<bean id="collectionBean" class="spring.demo5.CollectionBean">
		
        <!-- 数组类型的属性 -->
		<property name="arrs">
			<list>
				<value>会希</value>
				<value>冠希</value>
				<value>天一</value>
			</list>
		</property>
		
		<!-- 注入List集合的数据 -->
		<property name="list">
			<list>
				<value>芙蓉</value>
				<value>如花</value>
				<value>凤姐</value>
			</list>
		</property>
		
		<!-- 注入Map集合 -->
		<property name="map">
			<map>
				<entry key="aaa" value="111"/>
				<entry key="bbb" value="222"/>
				<entry key="ccc" value="333"/>
			</map>
		</property>
		
		<!-- Properties的注入 -->
		<property name="properties">
			<props>
				<prop key="username">root</prop>
				<prop key="password">123</prop>
			</props>
		</property>
	</bean>

Ⅵ、Spring的配置文件的开发

一种:创建工厂的时候加载多个配置文件:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");

二种:在一个配置文件中包含另一个配置文件:

<import resource="applicationContext2.xml"></import>

2、Spring的Bean管理-注解方式

步骤一:下载Spring的开发包

步骤二:创建web项目,引入Spring的开发包

在Spring的注解的AOP中需要引入spring-aop的jar包

步骤三:引入相关配置文件

log4j.properties

applicationContext.xml

引入约束:
spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html

* 引入约束:(引入context的约束):
<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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

</beans>

步骤四:编写相关的类

public interface UserDao {
	
	public void sayHello();
}

public class UserDaoImpl implements UserDao {

	@Override
	public void sayHello() {
		System.out.println("Hello Spring...");
	}

}

步骤五:配置注解扫描

<!-- Spring的注解开发:组件扫描(类上注解: 可以直接使用属性注入的注解) -->
	<context:component-scan base-package="spring.demo1"/>

步骤六:在相关的类上添加注解

@Component(value="userDao")
public class UserDaoImpl implements UserDao {

	@Override
	public void sayHello() {
		System.out.println("Hello Spring Annotation...");
	}

}

步骤七:编写测试类

@Test
	public void demo2() {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		UserDao userDao = (UserDao) applicationContext.getBean("userDao");
		userDao.sayHello();
	}

3、Spring的Bean管理的中常用的注解

Ⅰ、@Component:组件.(作用在类上)

Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)

* @Controller	:WEB层
* @Service		:业务层
* @Repository	:持久层

这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强。

Ⅱ、属性注入的注解:(使用注解注入的方式,可以不用提供set方法.)

@Value		:用于注入普通类型.

@Autowired	:自动装配,默认按类型进行装配.

@Qualifier   :按名称注入,强制使用名称注入.

@Resource相当于: @Autowired和@Qualifier一起使用.

Ⅲ、Bean的作用范围的注解

@Scope:

* singleton:单例

* prototype:多例

Ⅳ、Bean的生命周期的配置

@PostConstruct	:相当于init-method

@PreDestroy		:相当于destroy-method

4、Spring的Bean管理的方式的比较

                

* XML   :结构清晰.

* 注解   :开发方便.(属性注入.)

实际开发中还有一种XML和注解整合开发:BeanXML配置.但是使用的属性使用注解注入.

发布了57 篇原创文章 · 获赞 6 · 访问量 2581

猜你喜欢

转载自blog.csdn.net/qq_40640228/article/details/103822276
今日推荐