普通的bean
动态bean方法,必须是有返回值的额
静态工厂bean:方法的返回值是一个静态(static)的
spring中的scope属性:
(1) singleton:单态模式。即在整个 Spring 容器中,使用 singleton 定义的 Bean 将是单例的, 只有一个实例。默认为单态的。
(2)prototype:原型模式。即每次使用 getBean 方法获取的同一个<bean />的实例都是一个 新的实例。
(3)request:对于每次 HTTP 请求,都将会产生一个不同的 Bean 实例。
(4)session:对于每个不同的 HTTP session,都将产生一个不同的 Bean 实例。
(5)global session:每个全局的 HTTP session 对应一个 Bean 实例。典型情况下,仅在使用 portlet 集群时有效,多个 Web 应用共享一个 session。一般应用中,global-session 与 session 是等同的。
注意: (1)对于 scope 的值 request、session 与 global session,只有在 Web 应用中使用 Spring 时, 该作用域才有效。
(2)对于 scope 为 singleton 的单例模式,该 Bean 是在容器被创建时即被装配好了。
(3)对于 scope 为 prototype 的原型模式,Bean 实例是在代码中使用该 Bean 实例时才进行 装配的。
</bean>标签的id属性和name属性
一般情况下都是用id属性的,除非bean中含有特殊字符才使用name(定义id只可以以字母开头),在没有id属性的时候name属性的作用和id是一样的,
注入分类:设值注入、构造注入 也可通过内部bean实现注入
设值注入:
当指定 bean 的某属性值为另一 bean 的实例时,通过 ref 指定它们间的引用关系。ref 的值必须为某 bean 的 id 值。
(1)、
(2)使用ref标签也可以调用
构造注入:构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。
命名空间注入:
p 命名空间注入:采用设值注入方式,故需要有相应的 setter ;c 命名空间注入:采用构造注入方式,故需要有相应的构造器
SPEL注入:SPEL 表达式以#开头,后跟 一对大括号
主文件:包含关系的配置文件,用户管理其他配置文件
也可以把spring-base.xml、spring-student.xml、spring-teacher.xml使用spring-*.xml代替,但是同时主文件不能以spring-开头。
二、配置组件扫描器
需要导入aop的jar包增加约束,约束在 %SPRING_HOME%docsspring-framework-referencehtmlxsd-configuration.html 文件中。
同时也需要在类上面实现注解——@repository、@service、@controller、@entity分别对应数据库层、逻辑服务层、控制器层、实体类层
按类型注入域属性@Autowired,该注解默认使用按类型自动装配 Bean 的方式。
Bean 的生命始末@PostConstruct 与@PreDestroy
也可使用JavaConfig生成bean,例:
spring中的AOP示例:
定义和使用域属性
对于一个 POJO 类,在类上使用@Configuration 注解,将会使当前类作为一个 Spring 的 容器来使用,用于完成 Bean 的创建。
在该 JavaConfig 的方法上使用@Bean,将会使一个普通方法所返回的结果变为指定名称 的 Bean 实例。
by_name和by_type都可以使与属性自动注入