1.spring的基础配置2.set注入
2.1.p命名注入和c命名注入 3.Junit4.Bean的作用域
1.prototype :原型模式,简单来说就是每次去get对象的时候都会创建一个新的对象。具体可以看官方给出的图**hashcode**:值来源于这个对象的内部地址转换成的整型值。(网上找的,然后再深入很麻烦没有再看)2.singleton:单例模式,从容器中get的对象是同一个(spring的default) 5.bean自动装配6 使用@Comment组件
1.spring的基础配置- xml注入的时候,value的值是给构造函数,创建时候的,并不是指定的一个name变量给它赋值getBean ,Bean标签可以多别名import,用来合并xml配置(一般用于团队,每个人开发不同类需要一起配置时候)
将其余的xml配置文件
集合到一个xml中
1.普通注入
2.bean注入
3.集合注入
4.list注入
5.map注入
6.set注入
7.空注入
8.props注入(infomation)
2.1.p命名注入和c命名注入c plus plus java python
唱 跳 rap 篮球 DOTA LOL CF 202105100 小俊 man
在xml配置文件中引入命名规则
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
我很奇怪的一点是:我明明在我的idea中引入了两条规则,并且在setting里设置了URL。但是还是不能使用。但这两个注入规则不作为学习的重点。
3.Junit测试@Test
后续有时间再返回来详细讲解这个Junit,只要记得它的用法就可以了。
下面列出一张官方的图片重点学习bean作用域有哪些
注:看不清的字体,大家可以去官网查一下(链接附上)
1.prototype :原型模式,简单来说就是每次去get对象的时候都会创建一个新的对象。具体可以看官方给出的图
我们可以来看看在代码的具体实现
回到test测试类,测试一下我们在容器中取得的对象,是同一个对象还是多个对象
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");
user user1 = (user) context.getBean("user");
user user2 = (user) context.getBean("user");
System.out.println(user1==user2);
System.out.println(user1.hashCode());
System.out.println(user2.hashCode());
//原型模式
}
hashcode:值来源于这个对象的内部地址转换成的整型值。(网上找的,然后再深入很麻烦没有再看)
我们可以看看对象的地址是否一样来判断生成的是多个对象还是单个对象。
显然user1和user2是两个不同的对象
官网给出的图,我觉得对我们理解singleton可以更加直观
public void test(){
//单例模式
ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");
user user1 = (user) context.getBean("user");
user user2 = (user) context.getBean("user");
System.out.println(user1==user2);
System.out.println(user1.hashCode());
System.out.println(user2.hashCode());
}
我们可以看看我们的输出结果
输出的地址一致说明我们get到的user1和user2是同一个对象。
对spring的理解:我们在使用这些对象的时候。xml中配置的文件,会给我们把这些对象加入到IOC容器中,我们去取这些对象就行了
1.AutoWire:1.ByName,2.ByType
byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的bean idbyType:会自动在容器上下文中查找,和自己对象属性类型相同的bean!
@Autowired:它会自动寻找id相同的bean,说白了就是通过byName寻找
@Qualifier(value=" "):会寻找到与value相同的beanId的对象
**@Autowired(**required = false)
@Resource被弃用
6 使用@Comment组件
- @Comment组件要加在类上@Value(“Ethan”),可以实现注入、getBean("")的使用一般是类名的小写。
MVC三层架构
DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此
- dao层:@Repository(仓库的意思)service层,@Servicecontroller @Controller(web层)
这四个注解的功能是一样的,都是将某一类注册到spring中装配bean
作用域
@Scope
- prototype,原型模式singleton,单例模式
小结:
1.xml更加万能
2.注解,不是注解的类使用不了
3.xml用来管理bean
4.注解只负责完成属性注入



