一。配置pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xingxue.spring</groupId>
<artifactId>spring.day1</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- spring 相关的依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
<!-- spring web 模块提供了启动 spring 容器的 监听器 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
</dependencies>
</project>
二、配置beans.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">
<!-- component-scan 标签, 组件扫描标签:
base-package 属性:指定扫包,扫指定的包的所有子子孙孙包当中的类,并把这些类纳入spring 容器中,就不需要在 bean 标签来表示了。
不是所有的类都扫,只扫类上有标记的 类:
@Controller
@Service
@Repository
@Component 使用其中一个注解就可以了
-->
<context:component-scan base-package="com.xingxue"></context:component-scan>
</beans>
三。使用注解的方式 配置类
package com.xingxue.spring.web.controller;
import com.xingxue.spring.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
@Controller /*那几个注解选择其中一个就是了*/
public class UserController {
@Autowired/*这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,
它会自动帮你set/get。*/
private IUserService userService;
public void login(){
userService.login();
}
}
package com.xingxue.spring.service;
import org.springframework.stereotype.Service;
@Service
public interface IUserService {
public void login();
}
package com.xingxue.spring.service;
import com.xingxue.spring.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
@Service(value = "userService") /*bean标签配置的id属性*/
public class UserService implements IUserService {
@Autowired
private UserDao userDao;
public void login() {
System.out.println("userservice 方法执行了。");
userDao.login();
}
}
package com.xingxue.spring.dao;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
@Repository(value = "userDao")
public class UserDao {
public void login() {
System.out.println("正在查询....");
}
}
测试效果
package com.xingxue.spring.test;
import com.xingxue.spring.beans.A;
import com.xingxue.spring.beans.B;
import com.xingxue.spring.web.controller.UserController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
UserController userController= (UserController) cxt.getBean("userController");
userController.login();
}
}