SpringIoC

IOC :控制反转,将对象的创建权交给了Spring.
用代码来简单的实现以下:
这里写图片描述

这里写图片描述
把UserDao userDao = new UserDaoImpl();的创建权利交给Spring,

再把UserService的创建权交个Spring
引用ref=’自己取的别名id’
name 为属性名

创建一个User类:
public class User {
private int age;
private String name;
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return “User [age=” + age + “, name=” + name + “]”;
}
}
创建接口:
public interface UserDao {
public void save(User user);
}
创建接口实现类:
public class UserDaoImpl implements UserDao {

@Override
public void save(User user) {
        System.out.println(user);
}

}
创建Service:
public interface UserService {
public void save(User user);
}
创建Service实现类:
public class UserServiceImpl implements UserService{
/DI :Dependency Injection 依赖注入.需要有IOC的环境,Spring创建这个类的过程中,Spring将类的依赖的属性设置进去./
private UserDaoImpl userDao; //提供set方法创建权交给Spring
public void setUserDao(UserDaoImpl userDao) {
this.userDao = userDao;
}
@Override
public void save(User user) {
userDao.save(user);
}
}
创建测试类:
@Test
public void run1(){
ApplicationContext context = new ClassPathXmlApplicationContext(“ApplicationContext6.xml”);
UserService userService = (UserService)context.getBean(“userService”);
User user = (User)context.getBean(“user”);
userService.save(user);
}
如果整合Junit4进行测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(“classpath:ApplicationContext6.xml”)
public class UserTest {
@Resource(name=”userService”)
private UserService userService;
@Resource(name=”user”)
private User user;
@Test
public void run1(){
userService.save(user);
}
测试输出即可。
SpringIoC注入的两种方式
1.set注入
Set注入提供构造方法即可(不可不写)
2.构造注入
提供构造方法即可(不可不写)


IoC的注解

还是用上面的4个类不过Spring的配置文件要进行修改引入context约束
这里写图片描述

进行注解扫描
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)
* @Controller :WEB层
* @Service :业务层
* @Repository :持久层

这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强
@Value :用于注入普通类型.
@Autowired :自动装配:
* 默认按类型进行装配.
* 按名称注入:
* @Qualifier:强制使用名称注入.
@Resource相当于:
* @Autowired和@Qualifier一起使用.

Bean的作用范围的注解:
@Scope:
* singleton:单例
* prototype:多例

Bean的生命周期的配置:
@PostConstruct :相当于init-method
@PreDestroy :相当于destroy-method
这里写图片描述

XML和注解:
* XML :结构清晰.
* 注解 :开发方便.(属性注入.)

实际开发中还有一种XML和注解整合开发:
* Bean有XML配置.但是使用的属性使用注解注入.

猜你喜欢

转载自blog.csdn.net/qq_32711309/article/details/78653701