您的位置:首页 > 编程语言 > Java开发

Spring中注解配置解析

2019-03-16 10:54 537 查看

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>

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: