1.controller层
package com.hwy.controller;
import com.hwy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Controller
public class UserController {
/*
* 默认优先根据类型匹配
* 若匹配到多个类型则按照名字匹配,若名没匹配到则报错:
* 1.可修改属性的名字对应bean的名字
* 2.可以修改bean名字对应的属性名字@Service("userService")
* 3.可以通过@Qualifier设置属性的名字(覆盖)
* 4.@Primary设置主要的Bean
* */
@Autowired
@Qualifier("userServiceImpl")
UserService userService;
public void getUser(){
userService.getUser();
}
public UserController(){
System.out.println("userbean加载");
}
@PostConstruct
public void init(){
System.out.println("初始化");
}
@PreDestroy
public void destroy(){
System.out.println("销毁");
}
}
2.Service层
UserService接口
package com.hwy.service;
public interface UserService {
void getUser();
}
UserServiceImpl类
package com.hwy.service.impl;
import com.hwy.dao.UserDao;
import com.hwy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
@Override
public void getUser() {
userDao.getUser();
}
}
RoleServiceImpl类
package com.hwy.service.impl;
import com.hwy.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class RoleServiceImpl implements UserService {
@Override
public void getUser() {
}
}
3.Dao层
UserDao接口
package com.hwy.dao;
public interface UserDao {
void getUser();
}
UserDaoImpl类
package com.hwy.dao.impl;
import com.hwy.dao.UserDao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements UserDao {
@Override
public void getUser() {
System.out.println("查询数据库");
}
}
4.配置类
<?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 https://www.springframework.org/schema/context/spring-context.xsd">
<!--扫描包
use-default-filters:true默认扫描注解@Controller @Service @Reposity
annotation:根据注解完整限定名排除
assignable:根据类完整限定名排除
aspectj:根据切面表达式排除
<context:component-scan base-package="com.hwy" use-default-filters="true">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>-->
<context:component-scan base-package="com.hwy"></context:component-scan>
<context:property-placeholder location="db.properties"></context:property-placeholder>
</beans>
db.properties
hwy.name = "wanwan"
5.测试类
package com.hwy.tests;
import com.hwy.beans.User;
import com.hwy.controller.UserController;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class IocTest {
ApplicationContext ioc;
@Before
public void before() {
ioc=new ClassPathXmlApplicationContext("spring_ioc.xml");
System.out.println("容器加载");
}
@Test
public void test(){
UserController userController = ioc.getBean("userController", UserController.class);
System.out.println(userController);
}
@Test
public void test2(){
User user = (User)ioc.getBean(User.class);
System.out.println(user);
}
@Test
public void test3(){
UserController userController = ioc.getBean("userController", UserController.class);
userController.getUser();
}
}