使用注解配置bean
1.项目目录
2.UserController.java
package com.atguigu.ioc.userMod.controller;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
public UserController() {
System.out.println("UserController");
}
}
3.UserDao.java
package com.atguigu.ioc.userMod.dao;
public interface UserDao {
}
4.UserDaoImpl.java(UserDao接口的实现类)
package com.atguigu.ioc.userMod.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements UserDao{
public UserDaoImpl(){
System.out.println("UserDaoImpl");
}
}
5.UserService.java
package com.atguigu.ioc.userMod.service;
public interface UserService {
}
6.UserServiceImpl.java(UserService接口的实现类)
package com.atguigu.ioc.userMod.service;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService{
public UserServiceImpl() {
System.out.println("UserServiceImpl");
}
}
7.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: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.0.xsd">
<!--
<context:component-scan>:扫描组件,对设置的包下面的类进行扫描,会将加上注解的类作为spring的组件进行加载
组件:指spring中管理的bean
作为spring的组件进行加载:会自动在spring的配置文件中生成相对应的bean,这些bean的id会以类的首字母小写为值
<context:include-filter>:在设定的包结构下再次通过注解或类型具体包含到某个或某几个类
注意:在使用包含时,一定要设置use-default-filters="false",将默认(即扫描包下所有的类)的过滤关闭
<context:exclude-filter>:在设定的包结构下,再次通过注解或类型具体排除某个或某几个类
注意:在使用排除时,一定要设置use-default-filters="true",将默认(即扫描包下所有的类)的过滤打开
切记:一个<context:component-scan>中可以出现多个include,也可以同时出现多个exclude,但是两个不能同时出现
-->
<context:component-scan base-package="com.atguigu.ioc.userMod" use-default-filters="true">
<!-- <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> -->
<!-- <context:include-filter type="assignable" expression="com.atguigu.ioc.userMod.service.UserServiceImpl"/> -->
<!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> -->
<!-- <context:exclude-filter type="assignable" expression="com.atguigu.ioc.userMod.dao.UserDaoImpl"/> -->
</context:component-scan>
<!-- <bean id="userController" class="com.atguigu.ioc.userMod.controller.UserController"></bean>
<bean id="userServiceImpl" class="com.atguigu.ioc.userMod.service.UserServiceImpl"></bean>
<bean id="userDaoImpl" class="com.atguigu.ioc.userMod.dao.UserDaoImpl"></bean> -->
</beans>
8.Test.java
package com.atguigu.ioc.userMod;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.atguigu.ioc.userMod.controller.UserController;
import com.atguigu.ioc.userMod.dao.UserDao;
import com.atguigu.ioc.userMod.dao.UserDaoImpl;
import com.atguigu.ioc.userMod.service.UserService;
import com.atguigu.ioc.userMod.service.UserServiceImpl;
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);//com.atguigu.ioc.userMod.controller.UserController@4b553d26
UserService us = ac.getBean("userServiceImpl", UserServiceImpl.class);
System.out.println(us);//com.atguigu.ioc.userMod.service.UserServiceImpl@69a3d1d
UserDao ud = ac.getBean("userDaoImpl", UserDaoImpl.class);
System.out.println(ud);//com.atguigu.ioc.userMod.dao.UserDaoImpl@86be70a
}
}