初识Spring(六) | Spring使用注解开发

注解开发

在spring中,虽然可以使用xml的方式来进行bean的注入,bean的装配,bean属性值的注入。但是实际开发用注解进行开发是真的香,而使用xml进行bean的管理和装配的方式将会逐渐摒弃。

1 准备工作

在完成通过注解的方式来对bean进行注入之后,也可以用注解的方式来实现属性的自动注入。

前置环境

  1. 导入context头文件
    xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

  2. 开启注解支持
    <context:annotation-config/>

  3. 开启包扫描,为了扫描头部的注解 不需要也会扫描得到
    <!--指定注解扫描包--> <context:component-scan base-package="com.kuang.pojo"/>

2 bean注入和属性值赋值

实体类:

@Component
public class User {

    private String name;

    @Value("王五")
    public void setName(String name) {
        this.name = name;
    }

    public String getName(){
        return name;
    }

}

可以在属性值上直接注入,但是有set方法时建议在set方法上注入

  • 通过@Value("")的方式直接注入属性值,功能和bean中的相同

  • @Component注解和bean.xml文件中的bean标签作用一样,意思是将这个类交由spring容器管理

通过这种方式将实力类注入IOC容器之后不再需要在bean.xml中对实体类进行注入。

3 Component衍生注解

我们这些注解,就是替代了在配置文件当中配置步骤而已!更加的方便快捷!

@Component三个衍生注解

为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

  • **@Controller:**web层

  • **@Service:**service层

  • **@Repository:**dao层

写上这些注解,就相当于将这个类交给Spring管理装配了!

4 bean的自动装配

在之前的博客有写到在一个bean中使用另一个bean。

@Resource(name = "cat1")
private Cat cat;

@Autowired
@Qualifier(value = "cat1")
private Cat cat;
  • 而通过这么一中方式,实现了bean的装配。结合之前的内容,我们将可以完全摒弃xml配置文件的方式来对bean进行管理和注入。
  • 注解方式,快捷而优雅

这样配合使用就完成了所有在bean.xml中的类和属性注入的所有功能。

5 作用域 @scope

singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。

prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收

@Controller("user")
@Scope("prototype")
public class User {
	@Value("张三")
    public String name;
 }

6 小结

使用全注解的方式是主流的一种只用方式,在后续的springboo中更是常见使用。但是了解xml的方式有助于我们使用和理解框架的逐步演进。

  • xml方式
<bean id="people" class="com.lyj.bean.People" autowire="byName">
    <property name="name" value="张三"/>
    <property name="dog" ref="dog"/>
</bean>
<bean id="dog" class="com.lyj.bean.Dog"/>
  • 注解方式
@Component
public class People {
    
    @Autowired
    @Qualifier(value = "dog")
    private Dog dog;

    @Value("张三")
    private String name;
}

依赖注入只是IOC的一种实现,我们希望将对象的创建和管理交给Spring容器管理,这会让我们在管理类的时候不再需要进行复杂的代码更改,而用注入的方式一次性改变

例如:

private SqlService sqlService = new MySqlServiceImpl()

如果我们需要更改实现类,我们需要重新new一个对象

private SqlService sqlService = new OracleServiceImpl()

但是依赖注入的方式不同,它是这样实现的

@Resource(name = "mySqlServiceImpl")
private SqlService sqlService

@Resource(name = "oracleServiceImpl")
private SqlService sqlService

这样节省了我们出创建一个新对象的额外开销。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值