Java项目中使用spring (annotation)

本文使用的项目和 java 项目中使用 sping (XML) 文章所使用的项目完全一样,annotation 相比于 XML 方式配置要更加方便快捷。 但是 XML 方式没有侵入性, 更加符合 spring 的特性。 

先看一下项目结构吧:

 

然后是 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:annotation-config/>
  <context:component-scan base-package="com.dqpi.spring" />

</beans>

context:annotation-config 表示使用 annotation 配置,context:component-scan 表示扫描所有 com.dqpi.spring 包下有注解的类, 完成 bean 的装配。

常用注解:

@Controller 定义控制层 Bean, 如 Action

@Service    定义业务层 Bean

@Repository  定义 DAO 层 Bean

@Component 定义组件 Bean,不用具体区分时使用。

User 模型类代码:

@Component
public class User {
	private int age;
	private String name;
	public int getAge () {
		return age;
	}
	@Value ("20")
	public void setAge (int age) {
		this.age = age;
	}
	public String getName () {
		return name;
	}
	@Value ("大白")
	public void setName (String name) {
		this.name = name;
	}
}

其中 @Value 注解是给变量赋值,可以写在成员属性上也可以写在 set 方法上。

UserDao 接口

public interface UserDAO {
	public void save (User user);

}

UserDAOImp1 实现类

@Component
public class UserDAOImp1 implements UserDAO {

	@Override
	public void save (User user) {
		System.out.println ("使用 MySQL 数据库");
		System.out.println (user.getName ());

	}

}

UserDAOImp2 实现类

@Component
public class UserDAOImp2 implements UserDAO {

	@Override
	public void save (User user) {
		System.out.println ("使用 Oracl 数据库");

	}

}

Userservice 业务类

@Component
public class Userservice {
	private UserDAO userDAO;
	private User user;

	public UserDAO getUserDAO () {
		return userDAO;
	}

	@Resource (name="userDAOImp1")
	public void setUserDAO (UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	
	public User getUser () {
		return user;
	}

	@Resource
	public void setUser (User user) {
		this.user = user;
	}

	public void add () {
		this.userDAO.save (user);
	}

}

@Resource 是 JSR-250 提供的标准,是由甲骨文收购 java 后提出的。@Resource 注解默认按名称装配,当找不到名称匹配的 bean 再按类型装配.

还有一种自动装配的注解,就是 @Autowired ,它默认按类型匹配,自动装配 (Srping 提供的)。当找到多个符合类型出错时,可以使用 @Qualifier 解决:

@Autowired

@Qualifier ("bean 的名字") 

UserMain 启动方法

public static void main (String [] args) {
		ApplicationContext context =
			  new ClassPathXmlApplicationContext ("Bean.xml");
			Userservice userservice =context.getBean ("userservice",Userservice.class);
		userservice.add ();
	}

 

执行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值