一。配置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(); } }