Spring的scope="prototype"属性 - 多例
spring 默认scope 是单例模式(singleton),这样只会创建一个Action对象,每次访问都是同一个Action对象,数据不安全。 struts2 是要求每次次访问都对应不同的Action,scope="prototype"(多例) 可以保证 当有请求的时候 都创建一个Action对象。
request.getParameter() 和request.getAttribute() 区别:
getParameter 是用来接受用post个get方法传递过来的参数的。 getAttribute 必须先setAttribute。
Bean
参考:https://www.cnblogs.com/xiaoxi/p/5850095.html。
1<bean 2 id="beanId"(1) 3 name="beanName"(2) 4 class="beanClass"(3) 5 parent="parentBean"(4) 6 abstract="true | false"(5) 7 singleton="true | false"(6) 8 lazy-init="true | false | default"(7) 9 autowire="no | byName | byType | constructor | autodetect | default"(8) 10 dependency-check = "none | objects | simple | all | default"(9) 11 depends-on="dependsOnBean"(10) 12 init-method="method"(11) 13 destroy-method="method"(12) 14 factory-method="method"(13) 15 factory-bean="bean">(14) 16</bean>
参考:https://www.cnblogs.com/zffenger/p/5808031.html。
1<bean class="bean的完全限定名" 2 name/id="bean在容器内的唯一名称" 3 scope="bean的生命周期" 4 lazy-init="是否为延迟加载" 5 init-method="bean的setter被调用之后调用该方法进行初始化" 6 destroy-method="容器在销毁该Bean后的调用的方法" 7 abstract="是否为抽象Bean,spring对于抽象bean不产生实例,主要用于继承" 8 parent="父Bean的名称,会继承父Bean的属性,与Java的Class无任何关系" 9 factory-method="工厂方法的名字" 10 factory-bean="工厂Bean的名字" 11 depends-on ="依赖Bean的名字,保证初始化顺序。” > 12 13 <!-- Constructor-arg给属性赋值写法一 --> 14 <constructor-arg type="int" value="10"/> 15 <!-- Constructor-arg给属性赋值写法二 --> 16 <constructor-arg name="age" value="10"/> 17 <!-- Constructor-arg给属性赋值写法三 --> 18 <constructor-arg index="0" value="10"/> 19 20 <!-- Properties给属性赋值写法一 --> 21 <property name="bean1"> 22 <ref bean="另外一个bean的id"/> 23 </property> 24 <!-- Properties给属性赋值写法二 --> 25 <property name="bean1" ref="另外一个bean的id"/> 26 <!-- Properties给属性赋值写法三 --> 27 <property name="age" value="10"/> 28</bean>
spring注解
借鉴:https://www.cnblogs.com/xiaoxi/p/5935009.html。
1、@Autowired
@Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。
@Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。
2、Qualifier(指定注入Bean的名称)
3、Resource 默认通过name属性去匹配bean
@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
@Scope用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
@DependsOn:定义Bean初始化及销毁时的顺序
@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配
@PostConstruct 初始化注解
@PreDestroy 摧毁注解 默认 单例 启动就加载
@Async异步方法调用