欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring 4.2 之 详解(二)

程序员文章站 2022-03-10 22:43:14
...

Spring 注解准备

导入jar包

Spring 4.2 之 详解(二)

代码结构目录

Spring 4.2 之 详解(二)

bean.xm文件配置

        引入新的约束,开启注解自动扫描包,到类,属性,方法

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引用schema约束 -->
<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="com.debug.spring.*"/>
    
</beans>

注解创建对象(四个注解)

注解作用:为了让标注类本身的用途清晰,目前这四个注解功能都一样,都是创建对象

注解注入对象常见注解

@Component     ----- 

@Controller        ----- WEB层(常用)

@Service             ----- 业务层(常用)

@Repository       ----- 持久层

代码案例:

Spring 4.2 之 详解(二)

注解创建对象实例

@Scope(value="prototype")

@Scope(value="singleon")

注意:value值是可以省略的

Spring 4.2 之 详解(二)


Demo代码案例

1、在创建UserSerive.java类的上面使用注解实现

UserService.jave代码

/**
 * 1、使用注解创建对象。
 * 		@Component
 *      @Controller
 *      @Service
 * 2、@Scope注解
 * 		singleton
 *      propotype(使用场景是在多个Action)
 * 
 * @author Debug  date:2018-3-10上午10:21:45
 */
@Component(value="user_01")
public class User_01 {
	public void add(){
		System.out.println("创建新的同事......");
	}
}

测试Demo

public class TestUser_01 {
	@Test
	public void test() {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				"config.xml");
		User_01 user = (User_01) context.getBean("user_01");
		User_01 user01 = (User_01) context.getBean("user_01");
		System.out.println("user:" + user);
		System.out.println("user01:" + user01);
		user.add();
	}
}

测试结果

Spring 4.2 之 详解(二)


注解注入属性

注入属性注解种类

@Autowired  自动注入(自动装配)

      概念:根据类名去找到你相关的对象,没有指定是哪个对象

@Resource(name="userDao")

      概念:name属性值写注解创建Dao对象时value的值;常用,可以准确指出你要注入的那个对象

创建userService.java 和 UserDao.java类 ,在service中得到userDao对象

Demo案例

@Service("userService")
public class UserService {
	/**
	 * 注入userDao到UserService中
	 *  1、定义将注入的对象 
	 *  2、在userDao属性上使用注解 完成对象注入
	 * 
	 * 注意:使用注解方式不需要set方法
	 */
//	@Autowired
//	private UserDao userDao;
	
	//name属性值写注解创建Dao对象时value的值;常用,可以准确指出你要注入的那个对象
	@Resource(name="userDao")
	private UserDao userDao;

	public void add() {
		System.out.println("注解注入属性userService.......");
		userDao.add();
	}
}
/**
 * 注意:使不使用value都可以
 * @author Debug  date:2018-3-10上午11:29:17
 */
@Component("userDao")
public class UserDao {
	public void add() {
		System.out.println("注解注入属性userDao.......");
	}

}
public class TestDemo2 {

	@Test
	public void test() {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				"config.xml");
		UserService user = (UserService) context.getBean("userService");
		user.add();
	}

}

结果:

Spring 4.2 之 详解(二)