关键代码:
java:
// bean @Component public class User{} // 表现层 @Controller public class UserController {} // 业务层 @Service public class UserService {} // 持久化层(可以重写名称) @Repository("userRepository"){}
bean.xml:
<!-- 指定Spring IOC 容器扫描的包 base-package="com.shuoeasy.test": 引用的包路径 --> <context:component-scan base-package="com.shuoeasy.test"> </context:component-scan>
详细:
User.java
package com.shuoeasy.test.component; import org.springframework.stereotype.Component; @Component public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User [id=" + id + ", name=" + name + "]"; } }
UserController.java:
package com.shuoeasy.test.controller; import org.springframework.stereotype.Controller; // 表现层 @Controller public class UserController { public void execute(){ System.out.println("UserController execute"); } }
UserService.java:
package com.shuoeasy.test.service;
import org.springframework.stereotype.Service;
// 业务层
@Service
public class UserService {
public void add(){
System.out.println("UserService add");
}
}UserRepositoryImpl.java:
package com.shuoeasy.test.repository.impl;
import org.springframework.stereotype.Repository;
import com.shuoeasy.test.repository.UserRepository;
// 持久化层(可以重写名称)
@Repository("userRepository")
public class UserRepositoryImpl implements UserRepository{
public void save() {
System.out.println("UserRepositoryImpl save");
}
}bean.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:p="http://www.springframework.org/schema/p" 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.2.xsd"> <!-- 指定Spring IOC 容器扫描的包 base-package="com.shuoeasy.test": 引用的包路径 resource-pattern="abc/*.class":过滤,只要com.shuoeasy.test下abc包里面的文件 <context:exclude-filter type="annotation" expression=""/> 子节点指定排除指定表达式组件 <context:include-filter type="annotation" expression=""/> 子节点指定包含表达式的组件,改节点需要与use-default-filters="false"配合使用 use-default-filters="false" 默认true --> <context:component-scan base-package="com.shuoeasy.test" use-default-filters="true" > <!-- <context:exclude-filter type="annotation" expression="com.shuoeasy.test.service"/> --> <!-- <context:include-filter type="annotation" expression="com.shuoeasy.test.service"/> --> <!-- <context:exclude-filter type="assignable" expression="om.shuoeasy.test.service"/> --> </context:component-scan> </beans>
Main.java:
package com.shuoeasy.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.shuoeasy.test.component.User;
import com.shuoeasy.test.controller.UserController;
import com.shuoeasy.test.repository.UserRepository;
import com.shuoeasy.test.service.UserService;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
// bean
User user = (User) ctx.getBean("user");
System.out.println("user->" + user);
// 表现层
UserController userContoller = (UserController)ctx.getBean("userController");
userContoller.execute();
// 业务层
UserService userService = (UserService) ctx.getBean("userService");
userService.add();
// 持久层
UserRepository userRepository = (UserRepository)ctx.getBean("userRepository");
userRepository.save();
}
}输出:
user->User [id=0, name=null]
UserController execute
UserService add
UserRepositoryImpl save