Spring之创建bean和属性注入(注解方式)

1.导包



2.在src下创建bean.xml,引入约束,开启注解扫描


bean.xml

<?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">

	<!-- 开启注解扫描,扫面指定包里面的注解(类、方法、属性等上面的注解) -->
	<context:component-scan base-package="zh.spring.entity"></context:component-scan>

</beans>

3.在类和属性上添加注解

UserService.java

package zh.spring.entity;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component(value="userService")
@Scope(value="prototype")
public class UserService {
	
	@Resource(name="userDao")
	private UserDao userDao;// 使用注解注入属性,不需要set方法
	
	public void dao(){
		userDao.dao();
	}
	
	/**
	 * 创建对象的注解:
	 * @Component:通用
	 * @Controller:Web层创建bean
	 * @Service:Service层创建bean
	 * @Repository:Dao层创建bean
	 */

	/**
	 * 属性注入的注解   
	 * @Value:注入普通属性
	 * @Autowired:根据类型注入属性  
	 * @Qualifier:根据名称注入属性
	 * @Resource:根据类型和名称注入属性
	 */
	
}

UserDao.java

package zh.spring.entity;

import org.springframework.stereotype.Component;

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

	public void dao(){
		System.out.println("dao...");
	}
	
}

4.测试

AnnotationTest.java

package zh.spring.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import zh.spring.entity.UserService;

public class AnnotationTest {

	public static void main(String[] args) {

		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
		UserService userService1 = (UserService) applicationContext.getBean("userService");
		System.out.println(userService1);// zh.spring.entity.UserService@34c14649
		userService1.dao();// dao...

		UserService userService2 = (UserService) applicationContext.getBean("userService");
		System.out.println(userService2);// zh.spring.entity.UserService@7ced7dad
		userService2.dao();// dao...
		
	}

}

5.配置文件和注解混合使用

实际开发中,创建bean交给配置文件,注入属性由注解完成。

UserService.java

package zh.spring.entity;

import javax.annotation.Resource;

public class UserService {

	@Resource(name = "userDao")
	private UserDao userDao;// 使用注解注入属性,不需要set方法

	public void dao() {
		userDao.dao();
	}

	/**
	 * 创建对象的注解:
	 * 
	 * @Component:通用
	 * @Controller:Web层创建bean
	 * @Service:Service层创建bean
	 * @Repository:Dao层创建bean
	 */

	/**
	 * 属性注入的注解
	 * @Value:注入普通属性
	 * @Autowired:根据类型注入属性
	 * @Qualifier:根据名称注入属性
	 * @Resource:根据类型和名称注入属性
	 */
}

UserDao.java

package zh.spring.entity;

public class UserDao {

	public void dao() {
		System.out.println("dao...");
	}

}

bean.xml

<?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">

	<!-- 开启注解扫描,扫面指定包里面的注解(类、方法、属性等上面的注解) -->
	<context:component-scan base-package="zh.spring.entity"></context:component-scan>

	<bean id="userService" class="zh.spring.entity.UserService" scope="prototype"></bean>
	<bean id="userDao" class="zh.spring.entity.UserDao"></bean>

</beans>

XmlAndAnnotationTest.java

package zh.spring.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import zh.spring.entity.UserService;

public class XmlAndAnnotationTest {

	public static void main(String[] args) {

		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
		UserService userService1 = (UserService) applicationContext.getBean("userService");
		System.out.println(userService1);// zh.spring.entity.UserService@4a569e9b
		userService1.dao();// dao...

		UserService userService2 = (UserService) applicationContext.getBean("userService");
		System.out.println(userService2);// zh.spring.entity.UserService@7cc6f83d
		userService2.dao();// dao...
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/81051904