Spring笔记--通过注解配置bean

使用注解标识组件

  1. 普通组件:@Component
    标识一个受Spring IOC容器管理的组件
  2. 持久化层组件:@Repository
    标识一个受Spring IOC容器管理的持久化层组件
  3. 业务逻辑层组件:@Service
    标识一个受Spring IOC容器管理的业务逻辑层组件
  4. 表述层控制器组件:@Controller
    标识一个受Spring IOC容器管理的表述层控制器组件
  5. 组件命名规则
    ①默认情况:使用组件的简单类名首字母小写后得到的字符串作为bean的id
    ②使用组件注解的value属性指定bean的id
    注意:事实上Spring并没有能力识别一个组件到底是不是它所标记的类型,即使将 @Respository注解用在一个表述层控制器组件上面也不会产生任何错误,所以 @Respository、@Service、@Controller这几个注解仅仅是为了让开发人员自己明确 当前的组件扮演的角色。
    组件被上述注解标识后还需要通过Spring进行扫描才能够侦测到。

扫描组件:

  1. 指定被扫描的package
    <context:component-scan base-package=" "/>

  2. 详细说明
    ①base-package属性指定一个需要扫描的基类包,Spring容器将会扫描这个基类包及其子包中的所有类。
    ②当需要扫描多个包时可以使用逗号分隔。
    ③如果仅希望扫描特定的类而非基包下的所有类,可使用resource-pattern属性过滤特定的类
    ④包含与排除
    ●context:include-filter子节点表示要包含的目标类
    注意:通常需要与use-default-filters属性配合使用才能够达到“仅包含某些 组件”这样的效果。即:通过将use-default-filters属性设置为false, 禁用默认过滤器,然后扫描的就只是include-filter中的规则指定的 组件了。
    ●context:exclude-filter子节点表示要排除在外的目标类
    ●component-scan下可以拥有若干个include-filter和exclude-filter子节点

在这里插入图片描述
user.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:aop="http://www.springframework.org/schema/aop"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    					http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
    					
    <context:component-scan base-package="com.spring"> 
    </context:component-scan>				
</beans>

UserController.java

package com.spring.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.spring.service.UserServiceImpI;

@Controller
//@Controller(value="aa"),value属性指定生成的bean的id

public class UserController {
	
	@Autowired
	private UserServiceImpI userserviceimpi;
	
	public void adduser() {
		userserviceimpi.adduser();
	}
	
	public UserController() {
		System.out.println("UserController");
	}

}

UserDao.java

package com.spring.dao;
public interface UserDao {
	void adduser();
}

UserDaoImpI.java

package com.spring.dao;

import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImpI implements UserDao{
	public UserDaoImpI() {
		System.out.println("UserDaoImpI");
	}

	@Override
	public void adduser() {
		// TODO Auto-generated method stub
		System.out.println("1:添加成功");
	}
}

UserDaoImpI2.java

package com.spring.dao;

import org.springframework.stereotype.Repository;

@Repository
public  class UserDaoImpI2 implements UserDao{
	@Override
	public void adduser() {
		// TODO Auto-generated method stub
		System.out.println("2:添加成功");
	}
}

UserService.java

package com.spring.service;
public interface UserService {
	void adduser();
}

UserServiceImpI.java

package com.spring.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.spring.dao.UserDao;

@Service
public class UserServiceImpI implements UserService{
	
	public UserServiceImpI() {
		System.out.println("UserServiceImpI");
	}
	@Autowired
	@Qualifier(value="userDaoImpI2")
	private UserDao userdao;
	public void adduser() {
		userdao.adduser();
	}
}

test.java

package com.spring.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.controller.UserController;
import com.spring.dao.UserDaoImpI;
import com.spring.service.UserServiceImpI;

public class test {
	public static void main(String[] args) {
		ApplicationContext ac=new ClassPathXmlApplicationContext("user.xml");
		UserController uc=ac.getBean("userController",UserController.class);
//		System.out.println(uc);	
//		UserServiceImpI us=ac.getBean("userServiceImpI",UserServiceImpI.class);
//		System.out.println(us);	
//		UserDaoImpI ud=ac.getBean("userDaoImpI",UserDaoImpI.class);
//		System.out.println(ud);	
		uc.adduser();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值