<?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-4.0.xsd">
<!-- 开启注解扫描 -->
<context:component-scan base-package="com.learn.spring" ></context:component-scan>
</beans>
package com.learn.spring.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.learn.spring.service.UserService;
/**
* 表现层的组件
*
* @Controller的作用:
* 等价于在xml配置文件中: <bean id="userController" class="com.learn.spring.controller.UserController"></bean>
* @Controller注解默认的id值是类名首字母小写,如果想要自己指定,可以使用value属性来指定
* @Controller(value="id") / @Controller("id")
*/
@Controller
//@Component
public class UserController {
@Autowired(required=false) // 默认情况下,required=true,代表@AutoWired标注的属性必须被装配.
//可以改为required=false,有就装配,没有就算了.
private UserService userService ;
public void login(){
System.out.println("UserController login .....");
userService.Handlelogin();
}
}
package com.learn.spring.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.learn.spring.dao.UserDao;
/**
* 业务层的组件
*
*/
@Service
public class UserService {
/**
*@AutoWired 优先采用类型的匹配的方式进行bean的装配. 如果有多个类型兼容的bean匹配了,会使用
* 属性名 与bean的id值进行匹配.
*/
@Autowired
@Qualifier("userDaoMyBatisImpl") //进一步的指定要装配的bean的id值.
private UserDao userDao ;
public void Handlelogin(){
System.out.println("UserService handleLogin ....");
//处理登录的逻辑
userDao.getUserByUsernameAndPassword();
}
}
package com.learn.spring.dao;
public interface UserDao {
public void getUserByUsernameAndPassword();
}
package com.learn.spring.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoJdbcImpl implements UserDao{
public void getUserByUsernameAndPassword(){
System.out.println("UserDaoJdbcImpl getUserByUsernameAndPassword......");
}
}
package com.learn.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.learn.spring.controller.UserController;
import com.learn.spring.dao.UserDao;
import com.learn.spring.service.UserService;
public class TestAnnotation {
public static void main(String[] args) {
//.1实例化ioc容器
ApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml");
//2.获取bean
UserController userController =(UserController) ctx.getBean("userController");
System.out.println("userController:" + userController);
userController.login();
}
}