Spring(五)spring的注解IOC

Posted on 2021-04-11 22:13  MissRong  阅读(77)  评论(0)    收藏  举报

Spring(五)spring的注解IOC

一、准备

1、做IOC注解开发需要引入的jar包

 2、applicationContext.xml文件中需要的配置

需要配置组件扫描<context: .. >,来扫描哪些包下用了IOC注解,主要是扫描类上的注解。

<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.xsd">
        <context:component-scan base-package="com.icss"></context:component-scan>
</beans>

二、类上的注解

设置了自动扫描的包后,Spring并不是把所有的Java类都纳入到核心容器中处理,而是在类通过组建注解声明之后才会执行这个操作。

1、@Component--泛指组件,当组件不好归类的时候,可以使用这个注解进行分类

@Component(value = "userdao")
相当于:<bean id = "userdao" class = "com.icss.XXX..."></bean>

@Component
public class Man {
    public void qq() {
        System.out.println("男人正在聊QQ");
    }
}

2、@Controller

controller--控制层
@Controller
public class LoginController { //控制层 只管接受前台页面数据, 跳转页面 }

3、@Repository

@Repository 写在持久层

repository--用于标注数据组件,即dao组件
@Repository
public class LoginDaoImpl implements LoginDao {}

4、@Service

service--业务层   数据的变形整合和检验
@Service
public class LoginServiceImpl implements LoginService { //业务逻辑处理 }

 三、注释方式设置属性的值

注释方式设置属性的值可以省略掉set方法

1、基本数据类型的属性

@Value()--可省略set(),也可以在set()方法上加

@Value("李四")
public void setName(String name) {
    this.name = name;
}
@Value("张三")
private String name;

2、对象数据类型的属性

(1)Autowried

@Autowried注解默认根据类型type注入,前提是必须找到同类型(相同类型的实现类)的bean对象,若找不到报异常。

注:如果属性有多个实现类,则会出现异常。

例如:

       

 

 

 解决:可以通过@Autowried注解进行依赖注入,根据名称进行匹配,通过@Qualifier("bean对象名称")完成依赖注入

        

(2)Resource

@Resource默认根据名称进行匹配,若找不到同名bean对象,则再根据类型进行匹配。

  • Resource(name = "...") 

 

  •  Resource(type = "...")         
//    @Autowired (required = false)  设置bean对象为空,没有对象的话,就会传空值
//    @Resource(name = "loginServiceImpl") //可以根据bean的名称匹配
    @Resource(type = LoginDao.class) //也可以根据bean的类型匹配
    private LoginDao dao; //= new LoginDaoImpl();

3、其他注解

1)@PostConstruct、@PreDestroy

   @PostConstruct // 注解的方法将在类实例化后使用
    public void start() {
        System.out.printf("起始");
    }
    @PreDestroy   //注解的方法将在类销毁之前调用
    public void end() {
        System.out.printf("终止");
    }

2)@Scope--bean的作用域

@Controller
@Scope("prototype")
public class LoginController { ... }

3)xml和注解的对比和整合

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3