spring框架 c p标签的区别_Spring的一些总结

自己学习了主流的Spring框架,先总结一下IoC和DI,之后会补上AOP

IoC

IoC:控制反转,简单的说就是创建对象的时候原来是由开发人员自己维护,new一个对象,现在有了spring后,对象的创建以及依赖关系可以由spring完成以及注入,大大降低了耦合。

DI

DI:依赖注入,将一些类交给spring管理,需要用到这些类的时候,不再是自己去定义了,而是直接向spring容器索取,当spring容器知道你的需求之后,就会去它所管理的组件中查找,然后直接给你所需要的组件。

1、设值注入:在applicationContext中使用name来指定注入哪个属性,如果注入的是一个bean,则直接使用ref连接到另一个bean即可。

2、构造注入:构造注入的Element为constructor-arg,构造注入主要有三种形式,第一种是使用value来直接注入值,但是顺序必须和构造器中的参数顺序一致;

435d41f5f625680a8b44bdfcbfb59b21.png

第二种是使用index索引来注入值,索引值的第一位是0;

09f49c51ec68ec685c0177b5d25e315c.png

第三种是使用name来注入值,这是较常用的方式。

c7ee9205d16f1f3424411e6d343f6c7c.png

3、P命名空间和C命名空间

使用P命名空间和C命名空间需要在<beans>中引入规范:xmlns:p="http://www.springframework.org/schema/p"、xmlns:c="http://www.springframework.org/schema/c"

可以使用P:name、p:age等形式注入值;C命名空间和P命名空间类似。

4、自动注入:自动注入也有两种方式,第一种是ByName方式,byName会从容器中查找与实体类的域属性同名的bean的id,并将该bean自动注入给该域属性,在<bean>需要指定autowire属性为ByName。看一个简单的ByName的例子代码:

60009cdf77a5419c71113c485a96344d.png

这是一个Student的POJO类:

c56b1082b0fc107a6fb0ca3cf8c30817.png

省略了getter、setter方法;以及省略重写的toString方法。

这是一个School的POJO类:

dbcbee156ef8fc503674a00d1faeba52.png

写完两个POJO类之后,需要在配置文件中注册:

abb565ab87ab89ba71702a6e1b3a8265.png

注册之后可以在测试类中进行测试:

a8f59a44c536d2e19968c79aebe519f7.png

path中的路径是applicationContext.xml配置文件在包中的Qualified Name。

第二种是ByType方式,byType会从容器中查找与实体类的域属性相同的bean,并将该bean自动注入给该域属性,在<bean>需要指定autowire属性为ByType。

5、注解注入:注解注入需要在配置文件中设置组件扫描器,<context:component-scan base-package=".........."></context:component-scan>

base-package的几种写法:

1.com.java.spring.first:扫描com.java.spring.first及其子包

2. com.java.spring.second.*:扫描com.java.spring.second这个包的子包

在POJO类中,使用@Component("")来指定该类为bean对象,使用@Value("")来给这个bean注入值;

如果要使用自动注入,则使用@Autowired,该属性默认为ByType方式,如果指定要用ByName方式,则要求@Autowired和@Qualifier联合使用。

01a4e333bd2d093951423f19fdc92e19.png

另外补充与@Component注解功能相同,但意义不同的注解:

1、@Repository:注解在Dao实现类上

2、@Service:注解在service实现类上

3、@Controller:注解在SpringMVC的处理器上

6、JavaCondig注入:也需要在配置文件中设置组件扫描器,<context:component-scan base-package="..........">

创建一个javaConfig类来管理,使用@Configuration注解表示当前类充当Spring容器,即所有的bean将由这个类来创建,使用@Bean(name="student",autowire=Autowire.BY_TYPE)来指定bean以及自动注入的方式。

下面是简单的javaConfig类:

fc7b245152be3ed3eb1b128e7c53df61.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值