Spring中注解配置解析

4 篇文章 0 订阅

Spring会搜索显式指定的路径下的Java类,然后将带有特殊Annotation标注的类,全部注册为Spring Bean。省去了自己再xml文件中复杂的配置,由系统自动扫描。
注解的种类有如下:
1、@Component:标注一个普通的Spring Bean类
2、@Controller:标注一个控制器组件类
3、@Service:标注一个业务逻辑组件类
4、@Repository:标注一个DAO组件类
5、•@Autowired:用于对Bean的属性变量属性的settter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动装配工作。
6、•@Resource:其作用和@Autowired一样。区别在于@Autowired默认按照Bean类型装配,而@Resource默认按照Bean实例名称进行装配。@Resource有两个属性:name、type。这个比较常用。
7、@Qualifier:与@Autowired注解配合使用,会将默认的按Bean类型装配修改为按Bean实例名称装配,Bean的实例名称由@Qualifier注解的参数指定。

下面使用一个实例来更加深入的解析。
问题:判断输入的userName和password是否和数据库中匹配。
步骤;
1、新建一个User类,里面又userName和password两个属性,都是String类型
2、新建一个DBcon.java用来连接数据库。
3、新建一个Dao层接口IUserDao里面有isexist()方法,并新建一个UserDao来实现方法。
4、新建一个Service层接口IUserService里面有isexist()方法,并新建一个UserService来实现方法。通过调用UserDao对象来实现。
5、新建一个UserController来实现控制。
6、总体调用顺序为UserController调用UserService,再有UserService调用UserDao。

以下是代码:
DBcon:

//连接数据库
public class DBcon {
	public Connection getConnection(){
        //链接数据库
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=utf-8";
        String uname = "root";
        String upass = "123";
        try {
            Class.forName(driver);
            Connection con = DriverManager.getConnection(url, uname, upass);
            System.out.print("驱动并连接成功");
            return con;

        } catch (Exception e) {
            System.out.print("驱动或连接不成功");
            System.out.print(e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

}

IUserDao:

public interface IUserDao {
	public boolean isExist(User user);

}

UserDao:


@Repository("userDao")//括号内的userDao为bean中id,如果不写则默认为类名首字母小写。
public class UserDao implements IUserDao {
//实现方法,判断userName和password是否与数据库中相同。
	DBcon db=new DBcon();
	Connection con=db.getConnection();
	Statement stmt;
	PreparedStatement pstmt;
	ResultSet rs;

	public boolean isExist(User user) {
		List<User> list=new ArrayList<User>();
		String upsql="select * from tb_user";
		try {
			pstmt=con.prepareStatement(upsql);
			rs=pstmt.executeQuery();
			while(rs.next()){
				User user1=new User();
				user1.setId(rs.getString("id"));
				user1.setUserName(rs.getString("userName"));
				user1.setPassword(rs.getString("password"));
				list.add(user1);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for(int i=0;i<list.size();i++) {
			if(list.get(i).getUserName().equals(user.getUserName())) {
				System.out.println("success");
			}
		}
		// TODO Auto-generated method stub
		return false;
	}

}

IUserSevice:


public interface IUserSevice {
	public boolean isexist(User user);

}

UserService:

@Service("userService")
public class UserService implements IUserSevice {

	@Resource(name="userDao")
	public UserDao userDao;
	public UserService() {
		super();
	}
	public UserDao getUserDao() {
		return userDao;
	}
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	@Override
	public boolean isexist(User user) {
		// TODO Auto-generated method stub
		return this.userDao.isExist(user);
	}

}

UserController:


@Controller("userController")
public class UserController {
	@Resource(name="userService")
	public UserService userservice;

	public UserController() {
		super();
		
	}

	public UserService getUserservice() {
		return userservice;
	}

	public void setUserservice(UserService userservice) {
		this.userservice = userservice;
	}
	public boolean isExist(User user) {
		return this.userservice.isexist(user);
	}
	

}

User实体类

@Component("user")
public class User {
	private String id;
	private String userName;
	private String password;
	
	public User() {
		super();
	}
	public User(String id, String userName, String password) {
		super();
		this.id = id;
		this.userName = userName;
		this.password = password;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

测试类:

public class Test {
	public static void main(String[] args) {
		User user=new User();
		user.setUserName("lee");
		user.setPassword("123");
		ApplicationContext ac=new FileSystemXmlApplicationContext("src/com/my/bean5/applicationContext.xml");//xml文件位置
		UserController uc=(UserController) ac.getBean("userController");
		uc.isExist(user);

	}

}

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-4.3.xsd
      http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.3.xsd">
  
	 <!-- 使用 context 命名空间 ,在配置文件中开启相应的注解处理器 -->
     <context:component-scan base-package="com.my.bean5" /> //使用这句,系统将自动扫描文件中注解
     
</beans>
 

如果不好理解,自己手巧一遍会更加容易理解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值