介绍bean注解标识表现层、业务层、持久化层

关键代码:

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


你可能感兴趣的文章